EXPR(1)

名称
expr - 引数を数式とみなして計算する

書式
expr expression

解説
expr ユーティリティは、引数に与えられた expression を評価し、その結果を標準出力に書き出します。

expression で使われる演算子は全て、個別の引数として区切られていなければなりません。 また、コマンドインタプリタによって特殊キャラクタとして解釈されるような一部 の演算子は、エスケープ処理をしなければなりません。

以下に、利用可能な演算子を優先度の低い順に示します。 同じ優先順位の演算子は { } シンボルでくくってありまます。 キャラクタ (\) や、シングルクォーテーション (') によって括るなどの 注意が必要です。 通常の数式と同様、括弧 ``(''、``)'' を使うことで演算の順序を変えること ができます。

expr1 | expr2
    expr1 が空の文字列でも 0 でもない場合は、 expr1 を評価した結果を返し、さもなければ、 expr2 を評価した結果を返します。

expr1 & expr2
    expr1 と expr2 の各々の評価結果が空の文字列でも 0 でもない場合は、 expr1 を評価した結果を返し、さもなければ 0 を返します。

expr1 {=, >, >=, <, <=, !=} expr2
    expr1 と expr2 が整数ならば整数としての比較結果を返し、さもなければ、文字列として locale に従った照合方法による比較を行った結果を返します。 いずれの場合も、指定された関係が正しければ 1 を、正しく なければ 0 を返します。

expr1 {+, -} expr2
    整数値の引数に関して、加算あるいは減算した結果を返します。

expr1 {*, /, %} expr2
    乗算、除算 (結果は整数)、もしくは剰余の結果を返します。

expr1: expr2
    “” 演算子は、 expr2 と、文字列 expr1 とのパターンマッチを行います。 expr2 は、正規表現でなければなりません。 また、この正規表現は暗黙のうちに “^” が仮定されるため、文字列の先頭から比較を始めることになります。

    パターンマッチが成功した場合、もし正規表現中に少なくとも 1 つ “\(...\)” の形の部分正規表現が含まれていたならば、このうち “\1” に相当する文字列を返します。 このような部分正規表現が含まれていなければ、マッチした文字列の 長さを返します。 またパターンマッチが失敗した場合、もし部分正規表現が含まれて いたならば空の文字列を返し、含まれていない場合は 0 を返します。

丸括弧 “()” は通常と同じくグループ分けに用いることができます。

使用例

1.  以下の例は、変数 a に 1 を足します (sh の場合)。
        a=`expr $a + 1`

2.  以下の例は、変数 a に設定されたパス名のうち、 ファイル名に当たる部分を返します。 文字列 // は、除算演算子との混同を防ぐために用います。
        expr //$a: '.*/\(.*\)'

3.  以下の例は、変数 a に含まれる文字の数を返します。
        expr $a: '.*'

診断
expr ユーティリティは、以下の値のうち 1 つを返して終了します。
0   式は空文字列でも 0 でもない
1   式は空文字列か、0 であった
2   式が無効だった

規格
expr ユーティリティは p1003.2 準拠です。