形式
expr 式
機能
式を評価して,標準出力に結果を書き込みます。式の要素はすべて別々の引数として指定します。
式は,数値・文字列・変数・式及びそれらと演算子の組み合わせで指定します。式の評価は文字列および整数として保持します。
引数
優先順位の低い順に演算子を示します。同じ優先順位の演算子は,{ }で囲みコンマで区切って示します。expr1とexpr2には式を指定します。
引数が不正の場合,exprコマンドはエラーメッセージを出力して返り値2を返します。
戻り値
戻り値 | 意味 |
---|---|
0 | 正常終了。式は空文字列および0ではありません。 |
1 | 正常終了。式は空文字列または0です。 |
2 | エラー終了。式は無効です。 |
3以上 | エラー終了
|
注意事項
整数値は- 2147483648~2147483647の範囲で保存します。それより大きな値を指定した場合は,32ビットの2進数であふれた桁は無視して取り出されます。例えば,4294967295+1は0となります。また,値として42949672950を指定した場合は,42949672950という文字列で保存されます。文字列として取り出す場合(expr 42949672950という指定をした場合),文字列としての42949672950が取り出され表示されます。数値として取り出す場合(expr 42949672950 + 1という指定をした場合),42949672950 = 100111111111111111111111111111110110であり,上位4bitがあふれているため,無視されて11111111111111111111111111110110となり,それに1を加えて11111111111111111111111111110111となります。これは,16進数でfffffff7であり10進数で-9です。
演算子および括弧に指定する文字は,シェルによって解釈される文字を含むため,適切にエスケープする必要があります。式全体をダブルクォーテーション(")で囲むと文字列として解釈されるため,個々の演算子をダブルクォーテーション(")で囲む必要があります。
使用例
$ a=2
$ b=3
$ x=`expr ¥( $a + $b ¥) ¥* 10`
$ echo $?
0
$ echo $x
50
$
$ a=""
$ b="abcdef"
$ expr "$a" ¥| "$b"
abcdef
$
$ a='d:¥jp1as¥test.txt'
$ expr $a : '.*¥¥¥(.*¥)¥.'
test
$
$ a='abcde12345kl'
$ b='abcdefg'
$ expr $a : '.*[0-9].*'
12
$ expr $b : '.*[0-9].*'
0
$