名前 | 形式 | 機能説明 | オペランド | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 診断 | 注意事項
expr ユーティリティは式を評価して、その結果を標準出力に書き出します。文字 0 はゼロ値として書き出され、何もない場合は NULL 文字列として書き出されます。
argument オペランドは式として評価されます。式の項は空白文字で区切る必要があります。シェルに対する特殊文字は、エスケープする必要があります (sh(1) 参照)。空白文字またはその他の特殊文字を含む文字列は、引用符で囲む必要があります。式の長さは LINE_MAX (2048 文字) に制限されます。
演算子とキーワードを以下に示します。優先度の低いものから順に並べてあり、等しい優先度の演算子は、{ } 記号内にグループ分けされています。演算子はすべてその左に関わります。
1 番目の expr が NULL または 0 のどちらでもない場合、1 番目の expr の評価を返します。それ以外の場合、2 番目の expr が NULL でなければ、2 番目の expr の評価を返します。そうでなければ、0 を返します。
expr が両方とも NULL または 0 以外の場合、最初の expr を返します。それ以外の場合は、0 を返します。
両引数とも整数の場合、整数比較の結果を返します。それ以外の場合、ロケール固有の連立シーケンスを使用して、文字列比較の結果を返します。各比較の結果は、指定された関係が TRUE の場合は 1、FALSE の場合は 0 になります。
整数値引数の加減。
整数値引数の乗除または剰余。
マッチング演算子 : (コロン) は、最初の引数と 2 番目の引数を比較します。2 番目の引数は国際化された基本正規表現である必要があります。詳しくは regex(5) マニュアルページ、または 「注意事項」を参照してください。通常、/usr/bin/expr のマッチング演算子は一致したバイト数を返し、/usr/xpg4/bin/expr のマッチング演算子は一致した文字数を返します (失敗時は 0)。2 番目の引数に少なくとも 1 つの、国際化された基本正規表現のサブエクスプレッション [\ (. . . \ )] が含まれる場合、マッチング演算子は \1 に対応する文字列を返します。
数字だけからなる引数。先頭に負記号を付けることもできます。
integer 引数、または演算子符号の 1 つとして識別することができない文字列の引数です。
次の演算子は INTERACTIVE UNIX システムとの互換性のためだけに用意されるもので、INTERACTIVE UNIX システムではないスクリプトでは使用できません。
character-list にあるバイトのいずれかが、string のバイトに一致する最初の位置を報告します。
string の長さ (バイト数) を返します。
integer–1 の位置で始まり、長さが integer–2 バイトである string の部分文字列を抽出します。integer–1 が string のバイト数よりも大きい値である場合、expr は NULL 文字列を返します。string にあるバイト数よりも多く抽出しようとした場合、expr は string から残りのすべてのバイトを返します。integer-1 または integer-2 のどちらかが負の値である場合、結果は予測できません。
example$ a=`expr $a + 1` |
basename(1) をエミュレートします。basename(1) は、$a というパス名の最後の要素を返します。$a が /usr/abc/file か、ただの file のいずれかと等価の場合に、この例は、file を返します。引数としての単独の / に注意してください。expr は / を除数演算子とみなします (後述の 「注意事項」 を参照)。
example$ expr $a : '.*/\(.*\)' \| $a |
例 2. を改善したものです。// 文字を追加してあるので、除算演算子についてのあいまいさはなくなり、式全体が単純になっています。
example$ expr //$a : '.*/\(.*\)' |
expr の実行に影響を与える環境変数 LC_COLLATE、LC_CTYPE、LC_MESSAGES、NLSPATH の詳細については、environ(5) を参照してください。
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
使用条件 | SUNWcsu |
CSI | 対応済み |
シェルによる引数の処理後、expr は、値による場合を除き、演算子とオペランドの違いを区別できなくなります。$a が = の場合、
example$ expr $a = '=' |
というコマンドは、
example$ expr = = = |
と等価になります。これは、引数が expr に渡される (さらに、すべて引数が = 演算子と見なされる) ためです。次のコマンドは正しく動作します。
example$ expr X$a = X= |
旧バージョンのあるバージョンとは違って、expr はシステムに提供されたすべてのロケールに対して、国際化された基本正規表現を使用します。国際化された正規表現に関しては regex(5) のマニュアルページを参照してください。
名前 | 形式 | 機能説明 | オペランド | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 診断 | 注意事項