総合手引 | セクション 1 | English | Deutsch | オプション |
すべての演算子およびオペランドは個別の引数として渡す必要があります。 演算子にはコマンドインタプリタにとって特別な意味を持つものがありますので、 適切にクォートする必要があります。 整数オペランドはすべて基数 10 として解釈されます。
数値演算は、符号付き整数計算で行われます。
以下に、使える演算子を優先度の低い順に示します。 すべて左結合です。 同じ優先度の演算子は、{ } で括ってあります。
expr1| expr2 | |
expr1 が空の文字列でも 0 でもない場合は expr1 を評価した結果を返し、さもなければ expr2 を評価した結果を返します。 | |
expr1& expr2 | |
expr1 と expr2 の各々の評価結果が、ともに空の文字列でも 0 でもない場合は expr1 を評価した結果を返し、さもなければ 0 を返します。 | |
expr1{=, >, >=, <, <=, !=} expr2 | |
expr1 と expr2 がともに整数ならば整数としての比較結果を返し、さもなければ 文字列とみなして、ロカールに従った照合方法を用いた比較結果を 返します。 いずれの場合も、指定された関係が「真」ならば 1 を、「偽」ならば 0 を返します。 | |
expr1{+, -} expr2 | |
整数値の引数に関して、加算あるいは減算した結果を返します。 | |
expr1{*, /, %} expr2 | |
整数値の引数に関して、乗算、整数除算、または剰余の結果を返します。 | |
expr1: expr2 | |
"amp;:"
演算子は、
expr1
と
expr2
のパターンマッチを行います。
expr2
は、正規表現でなければなりません。
またこの正規表現は、暗黙のうちに
"^"
が仮定されることにより、文字列の先頭から比較を始めることに
なります。
パターンマッチが成功した場合、もし正規表現中に少なくとも1つ "\(...\)" の形の部分正規表現が含まれていたならば、このうち "\1" に相当する文字列を返します。 このような部分正規表現が含まれていなければ、マッチした文字列の 長さを返します。 またパターンマッチが失敗した場合、もし部分正規表現が含まれて いたならば空の文字列を返し、含まれていない場合は 0 を返します。 | |
丸括弧 "()" は通常と同じくグループ分けに用いることができます。
expr ユーティリティは、 演算子かもしれない引数とオペランドかもしれない引数を字句的には区別しません。 字句的に演算子と等しいオペランドは、構文エラーと解釈されます。 回避方法については、後述の使用例を参照してください。
一般に expr コマンドの構文は、歴史的なもので不便です。 新規アプリケーションでは、 expr の代りにシェルの数値演算を使用することをお勧めします。
EXPR_COMPAT | |
設定すると、互換モードが有効になります。 | |
a=$(expr $a + 1)
a=$(expr 1 + $a)
a=$(expr \( $a \) + 1)
expr q//$aq amp;: '.*/\(.*\)'
以下の例は、変数 a に含まれる文字の数を返します。 繰り返しになりますが、 a がハイフンで開始する可能性がある場合、 expr へのオプションとして解釈されることを避ける必要があります。
expr -- q$aq amp;: q.*q
expr \( qX$aq amp;: q.*q \) - 1
0 | 式は空文字列でも 0 でもない |
1 | 式は空文字列か、0 であった |
2 | 式が無効だった |
EXPR (1) | July 12, 2004 |
総合手引 | セクション 1 | English | Deutsch | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.