EXPR(1) FreeBSD 一般コマンドマニュアル EXPR(1)
名称
expr − 式を評価する |
書式
expr [−e] expression |
解説 |
expr ユーティリティは、与えられた式 expression を評価し、その結果を標準出 力に書き出します。 すべての演算子およびオペランドは個別の引数として渡す必要があります。演算 子にはコマンドインタプリタにとって特別な意味を持つものがありますので、適 切にクォートする必要があります。整数オペランドはすべて基数 10 として解釈 されます。 数値演算は、符号付き整数計算で行われます。 −e フラグを指定すると、演算は C の intmax_t データ型 (使用可能な最大整数型) を使用し、 expr は数値あふ れを検出するとエラー表示を返します。整数に変換するとあふれるような大きさ の数値オペランドが指定されると、これは代りに文字列として解釈されます。 −e を指定しないと、数値演算および整数引数の解釈は、 long データ型を使用し、C 標準のルールに従って黙って桁あふれを起します。 以下に、使える演算子を優先度の低い順に示します。すべて左結合です。同じ優 先度の演算子は、{ } で括ってあります。 |
expr1 | expr2
expr1 が空の文字列でも 0 でもない場合は expr1 を評価した結果を返 し、さもなければ expr2 を評価した結果を返します。 expr1 & expr2 expr1 {=, >, >=, <, <=, !=}
expr2 expr1 {+, -} expr2 expr1 {*, /, %} expr2 expr1 : expr2 パターンマッチが成功した場合、もし正規表現中に少なくとも1つ ‘‘\(...\)’’ の形の部分正規表現が含まれていたならば、このうち ‘‘\1’’ に相当する文字列を返します。このような部分正規表現が含まれ ていなければ、マッチした文字列の長さを返します。またパターンマッ チが失敗した場合、もし部分正規表現が含まれていたならば空の文字列 を返し、含まれていない場合は 0 を返します。 丸括弧 ‘‘()’’ は通常と同じくグループ分けに用いることができます。 expr ユーティリティは、演算子かもしれない引数とオペランドかもしれない引数 を字句的には区別しません。字句的に演算子と等しいオペランドは、構文エラー と解釈されます。回避方法については、後述の使用例を参照してください。 一般に expr コマンドの構文は、歴史的なもので不便です。新規アプリケーショ ンでは、 expr の代りにシェルの数値演算を使用することをお勧めします。 以前の実装との互換性 環境変数 |
EXPR_COMPAT
設定すると、互換モードが有効になります。 使用例 |
• (sh(1) 構文での) 以下の例は、変数 a に 1 を加えます:a=$(expr $a + 1)
• a の値が負数だと、これは失敗します。 a が負数の場合に expr コマンドへ のオプションだと解釈されないようにするには、この式を次のようにする必 要があります: a=$(expr 1 + $a) • より一般的には、負数となる可能性のある値は括弧で括ります: a=$(expr \( $a \) + 1) • 以下の例は、変数 a に設定されたパス名のうち、ファイル名に当たる部分を 表示します。 a はパス / を表現している可能性があるので、これが割り算 の演算氏として解釈されないようにする必要があります。 // 文字がこの曖 昧性を解決します。 expr "//$a" : ’.*/\(.*\)’ 以下の例は、変数 a に含まれる文字の数を返します。繰り返しになりますが、 a がハイフンで開始する可能性がある場合、 expr へのオプションとして解釈され ることを避ける必要があります。 • expr コマンドが IEEE Std 1003.1-2001 (‘‘POSIX.1’’) に適合している場 合、これは単純です: expr -- "$a" : ".*" • 一方、古いシステムへも可搬とするためには、より複雑なコマンドが必要と なります: expr \( "X$a" : ".*" \) - 1 診断 |
expr ユーティリティは、以下の値のうち1つを返して終了します。 |
0
式は空文字列でも 0 でもない 関連項目 |
規格
expr ユーティリティは、互換モードが有効でない場合には、 IEEE Std 1003.1-2001 (‘‘POSIX.1’’) に適合します。 −e フラグは拡張です。 FreeBSD 10.0 July 12, 2004 FreeBSD 10.0 |