Go to main content

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

印刷ビューの終了

更新: 2022年7月27日
 
 

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

Returns the evaluation of the first expr if it is neither NULL nor 0; otherwise, returns the evaluation of the second expr if it is not NULL; otherwise, 0.

expr & expr

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

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

両引数とも整数の場合、整数比較の結果を返します。それ以外の場合、ロケール固有の連立シーケンスを使用して、文字列比較の結果を返します。The result of each comparison is 1 if the specified relationship is TRUE, 0 if the relationship is FALSE.

expr { +, - } expr

整数値引数の加減。

expr { *, /, % } expr

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

expr : expr

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

integer

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

string

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

The following four operators: index, length, match, and substr, are all at the same precedence:

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 からカウントします)。If integer-1 has a value greater than the number of bytes in string, expr returns a null string.string にあるバイト数よりも多く抽出しようとした場合、expr は string から残りのすべてのバイトを返します。integer-1 または integer-2 のどちらかが負の値である場合、結果は不確定です。

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

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

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

以下は basename(1) をエミュレートする例です。これは、$a というパス名の最後の要素を返します。For $a equal to either /usr/abc/file or just file, the example returns file.(引数としての単独の / に注意してください。 expr は / を除数演算子とみなします。See NOTES below.)

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

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

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

/usr/bin/expr

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

/usr/xpg4/bin/expr

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

環境変数

See environ(7) for descriptions of the following environment variables that affect the execution of expr: LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES, and NLSPATH.

終了ステータス

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

0

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

1

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

2

不正な式の場合。

> 2

エラーが発生しました。

属性

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

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

The match, substr, length, and index operators are Uncommitted.ほかはすべて「確実」です。

関連項目

basename(1), echo(1), ed(1), sh(1), intro(3), attributes(7), environ(7), regex(7), standards(7)

診断

syntax error

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

non-numeric argument

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

CSI に対応していない演算子

次の 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(7) のマニュアルページを参照してください。

ほかのバージョンでの演算子優先順位

Solaris の以前のリリースには、ここで説明されている expr コマンドとは演算子優先順位が異なっている /usr/ucb/expr コマンドがありました。また、/usr/gnu/bin/expr コマンドには独自の演算子優先順位があります。