名前 | 形式 | 機能説明 | オペランド | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 診断 | 注意事項
expr ユーティリティは式を評価して、 その結果を標準出力に書き出します。 文字 0 はゼロ値として書き出され、 何もない場合は NULL 文字列として書き出されます。
argument オペランドは式として評価されます。 式の項は空白文字で区切る必要があります。 シェルに対する特殊文字は、 エスケープする必要があります ( sh(1) 参照 ) 。 空白文字またはその他の特殊文字を含む文字列は、引用符で囲む必要があります。 式の長さは LINE_MAX (2048 文字 ) に制限されます。
演算子とキーワードを以下に示します。 優先度の低いものから順に並べてあり、 等しい優先度の演算子は、 { } 記号内にグループ分けされています。 演算子はすべてその左に関わります。
最初の expr が NULL でも 0 でもない場合、それを返します。 NULL か 0 の場合は、 2 番目の expr を返します。
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 のどちらかが負の値である場合、 結果は予測できません。
シェル変数 a に 1 を足します。
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 | 対応済み |
basename(1), ed(1), sh(1), Intro(3), attributes(5), environ(5), regex(5), XPG4(5)
シェルによる引数の処理後、 expr は、値による場合を除き、演算子とオペランドの違いを区別できなくなります。 $a が = の場合、
example$ expr $a = '='
というコマンドは、
example$ expr = = =
と等価になります。これは、引数が expr に渡される ( さらに、すべて引数が = 演算子と見なされる ) ためです。 次のコマンドは正しく動作します。
example$ expr X$a = X=
旧バージョンのあるバージョンとは違って、 expr はシステムに提供されたすべてのロケールに対して、 国際化された基本正規表現を使用します。 国際化された正規表現に関しては regex(5) のマニュアルページを参照してください。
名前 | 形式 | 機能説明 | オペランド | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 診断 | 注意事項