マニュアルページセク ション 1: ユーザーコマンド

印刷ビューの終了

更新: 2014 年 7 月
 
 

expr(1)

名前

expr - 引数を式として評価する

形式

/usr/bin/expr argument...
/usr/xpg4/bin/expr argument...
/usr/xpg6/bin/expr argument...

説明

/usr/bin/expr, /usr/xpg4/bin/expr

expr ユーティリティーは式を評価して、その結果を標準出力に書き出します。文字 0 はゼロ値として書き込まれ、何もない場合は NULL 文字列として書き込まれます。

/usr/xpg6/bin/expr

expr ユーティリティーは式を評価して、その結果とその後に NEWLINE を標準出力に書き出します。expr 処理からの結果がない場合、NEWLINE が標準出力に書き込まれます。

オペランド

argument オペランドは式として評価されます。式の項は空白文字で区切る必要があります。シェルに対する特殊文字は、エスケープする必要があります (sh(1) 参照)。空白文字またはその他の特殊文字を含む文字列は、引用符で囲む必要があります。式の長さは LINE_MAX (2048 文字) に制限されます。

演算子とキーワードを以下に示します。優先度の低いものから順に並べてあり、等しい優先度の演算子は、{ } 記号内にグループ分けされています。演算子はすべてその左に関わります。

expr \| expr

1 番目の expr が NULL または 0 のどちらでもない場合、1 番目の expr の評価を返します。それ以外の場合、2 番目の expr が NULL でなければ、2 番目の expr の評価を返します。そうでなければ、0 を返します。

expr \& expr

expr が両方とも NULL または 0 以外の場合、最初の expr を返します。それ以外の場合は、0 を返します。

expr{ =, \>, \>=, \<, \<=, !=} expr

両引数とも整数の場合、整数比較の結果を返します。それ以外の場合、ロケール固有の連立シーケンスを使用して、文字列比較の結果を返します。各比較の結果は、指定された関係が TRUE の場合は 1FALSE の場合は 0 になります。

expr { +, } expr

整数値引数の加減。

expr { \*, /, %} expr

整数値引数の乗除または剰余。

expr : expr

マッチング演算子 : (コロン) は、最初の引数と 2 番目の引数を比較します。2 番目の引数は国際化された基本正規表現である必要があります。ただし、すべてのパターンが文字列の最初にアンカーされるという点を除きます。つまり、文字列の最初の文字から始まるシーケンスだけが正規表現と一致することができます。regex(5) および「注意事項」を参照してください。通常、/usr/bin/expr のマッチング演算子は一致したバイト数を返し、/usr/xpg4/bin/expr のマッチング演算子は一致した文字数を返します (失敗時は 0)。2 番目の引数に少なくとも 1 つの、基本正規表現のサブエクスプレッション [\(...\)] が含まれる場合、マッチング演算子は \1 に対応する文字列を返します。

integer

数字だけからなる引数。先頭に負記号を付けることもできます。

string

integer 引数、または演算子符号の 1 つとして識別することができない文字列の引数です。

index、length、match、および substr の 4 つの演算子の優先度はすべて同じです。

index string character-list

character-list のバイトが string のバイトと一致する、string の最初のバイトを報告します (1 からカウントします)。character-list のバイトが string のバイトと一致しない場合は、0 が返されます。

length string

string の長さ (バイト数) を返します。終端 NULL 文字はそのカウントには含まれません。

match string regular-expression

expr : expr マッチング演算子と同義です。

substr string integer-1 integer-2

位置 integer-1 から始まる、長さが integer-2 バイトのバイトシーケンスを string から抽出します (1 からカウントします)。integer-1 が string のバイト数よりも大きい値である場合、expr は NULL 文字列を返します。string にあるバイト数よりも多く抽出しようとした場合、expr は string から残りのすべてのバイトを返します。integer-1 または integer-2 のどちらかが負の値である場合、結果は不確定です。

使用例 1 整数をシェル変数に追加する

シェル変数 a に 1 を追加します。

example$ a=`expr  $a  +  1`
使用例 2 パス名の要素を返す

以下は basename(1) をエミュレートする例です。これは、$a というパス名の最後の要素を返します。$a/usr/abc/file か、ただの file のいずれかと等価の場合に、この例は、file を返します。(引数としての単独の / に注意してください。 expr は / を除数演算子とみなします。後述の「注意事項」を参照.)

example$ expr $a : '.*/\(.*\)' \| $a
使用例 3 // 文字を使用して式を単純にする

前の例を改善したものです。// 文字を追加してあるので、除算演算子についてのあいまいさはなくなり、式全体が単純になっています。

example$ expr //$a : '.*/\(.*\)'

/usr/bin/expr

使用例 4 変数にバイト数を返す
example$ expr "$VAR" : '.*'

/usr/xpg4/bin/expr

使用例 5 変数に文字数を返す
example$ expr "$VAR" : '.*'

環境変数

expr の実行に影響を与える次の環境変数 の詳細については、environ(5) を参照してください。LANG、LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、および NLSPATH。

終了ステータス

式を評価した結果として、expr は次の終了値を返します。

0

式が NULL でも 0 でもない場合。

1

式が NULL または 0 である場合。

2

不正な式の場合。

>2

エラーが発生した。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/core-os
CSI
有効。「注意事項」を参照してください。
インタフェースの安定性
下記を参照。
標準
standards(5) を参照してください。

match、substr、length、および index 演算子は「不確実」です。ほかはすべて「確実」です。

関連項目

basename(1), ed(1), sh(1), Intro(3), attributes(5), environ(5), regex(5), standards(5)

診断

syntax error

演算子とオペランドのエラー

non-numeric argument

数値ではない文字列に対して演算を行う

次の 3 つの演算子は CSI に対応していません。これらは、/usr/xpg4/bin/expr および /usr/xpg6/bin/expr で使用することもできません。


index string character-list

length string

substr string integer-1 integer-2

シェルによる引数の処理後、expr は、値による場合を除き、演算子とオペランドの違いを区別できなくなります。$a= の場合、

example$ expr $a = '='

というコマンドは、次のコマンドと等価になります。

example$ expr = = =

これは、引数が expr に渡される (さらに、すべて引数が = 演算子と見なされる) ためです。次のコマンドは正しく動作します。

example$ expr X$a = X=

正規表現

旧バージョンのあるバージョンとは違って、expr はシステムに提供されたすべてのロケールに対して、国際化された基本正規表現を使用します。国際化された正規表現に関しては regex(5) のマニュアルページを参照してください。