Previous: test invocation, Up: Conditions


16.4 expr: 式の評価

exprは式を評価し,結果を標準出力に書き出します.それぞれの式 のトークンは,分離している引数にする必要があります.

オペランドは整数または文字列のいずれかになります.整数は,一桁以上の十 進数と,追加で‘-’を前置したものから成り立ちます.exprは, あらゆるものが,適用されているオペレーションに依存して,オペランドの位 置に存在する整数または文字列を変換します.

文字列はexpr対し引用符で囲みませんが,例えばスペースのような, シェルで特別な意味を持つ文字を保護するために,それらを引用符で囲む必要 があるかもしれません.しかし,引用符で囲まれているかどうかに依存せず, 文字列オペランドは,括弧や+のようなexprの演算子にすべ きではなく,引用符で囲まれているものを評価するために,任意の文字列を $strをシェルに渡すことは安全ではありません.これを排比する方法 の一つは,GNUの拡張+ (例えば+ "$str" = foo)で す.より移植性の高い方法は," $str"を使用し,前置するスペー スを数に入れるため式の結果を調整することです(例えば" $str" = " foo").

オプションとして間違って解釈される可能性があるので,符の整数や前に ‘-’が付く文字列をexprの最初の引数として渡すべきではあり ません.これは,括弧で避けることが可能です.また,移植性の高いスクリプ トでは,整数の形式となりうる文字列演算子を使用すべきではありません.こ れは,上記のスペースを前置する方法で回避可能です.

演算子は,挿入辞シンボルや前置キーワードとして与えることができます.カッ コは,通常の方法のグループとして使用してもかまいません.しかし,シェル が評価することを避けるために,カッコと多くのオペレータを引用符で囲む必 要があります.

終了ステータスは,以下のようになります.

     
     
     
     
     0 式がnullでも0でもない場合.
     1 式がnullまたは0の場合.
     2 式が構文上有効な場合.
     3 エラーが生じた場合.