[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
このセクションでは,その出力ではなく,終了ステータスが主に役に立つコマ
ンドを記述します.このためそれらは,シェルのif
文の条件やパイプ
ラインの最後のコマンドとしてよく使用されます.
16.1 false : 何もせず失敗します | Do nothing, unsuccessfully. | |
16.2 true : 何もせず成功します | Do nothing, successfully. | |
16.3 test : ファイル形式の調査と値の比較 | Check file types and compare values. | |
16.4 expr : 式の評価 | Evaluate expressions. |
false
: 何もせず失敗します
false
は,失敗(failure)を意味する1の終了ステータスを返
す以外何もしません.それは,シェルスクリプトの失敗のコマンドが必要な位
置で使用することが可能です.
デフォルトで,false
は`--help'と`--version'を尊
重します.しかし,それはPOSIXに準拠していないので,環境変数
POSIXLY_CORRECT
が設定されているとき,false
は,
`--help'と`--version'を含む,すべてのコマンドライン引数
を無視します.
このバージョンのfalse
は,Cプログラムとして実装されていて,そ
のため,シェルスクリプトの実装より安全かつ高速になり,アカウントの使用
を禁止する目的のダミーシェルとして使用しても安全でしょう.
false
は,(ここで説明されている他のすべてのプログラムとは異な
り) `--help'や`--version'を用いて呼び出されても,失敗の
終了ステータスを返しすことに注意して下さい.
true
: 何もせず成功します
true
は,成功(success)を意味する0の終了ステータスを返す
以外何もしません.それは,シェルスクリプトの成功のコマンドが必要な位置
で使用することが可能ですが,シェル組み込みコマンド :
(コロン)は
同じことをより高速に行います.最近のほとんどのシェルでは,
true
が組み込みコマンドなので,スクリプトで`true'を使用
するとき,おそらくここで説明しているものではなく組み込みコマンドを使用
することになります.
デフォルトで,は`--help'と`--version'を尊重します.しか
し,それはPOSIXに準拠していないので,環境変数
POSIXLY_CORRECT
が設定されているとき,true
は
`--help'と`--version'を含む,すべてのコマンドライン引数
を無視します.
このバージョンのtrue
は,Cプログラムとして実装されていて,そ
のため,シェルスクリプトの実装より安全かつ高速になり,アカウントの使用
を禁止する目的のダミーシェルとして使用しても安全でしょう.
test
: ファイル形式の調査と値の比較 条件式exprの評価に依存して,0(真)または1(偽)のステータスを返しま す.式のそれぞれの部分は,分離された引数にする必要があります.
test
には,ファイルのステータスの調査,文字演算子,そして数字
比較の演算子があります.
ほとんどのシェルには同じ名前の組み込みコマンドがあるため,スクリプト内 や対話的に簡素なコマンド名を使用すると,ここで記述するものと異なる機能 となる可能性があります.
以下のオプションの他に,test
は,単独の`--help'や
`--version'を受け入れます.See section 2. 共通のオプション. 単一のオプショ
ン無しの引数も可能です.test
は,引数がnullでない場合,真を返
します.
16.3.1 ファイル形式のテスト | -[bcdfhLpSt] | |
16.3.2 アクセス許可のテスト | -[gkruwxOG] | |
16.3.3 ファイルの特徴テスト | -e -s -nt -ot -ef | |
16.3.4 文字列のテスト | -z -n = != | |
16.3.5 数値テスト | -eq -ne -lt -le -gt -ge | |
16.3.6 test の連結 | ! -a -o |
これらのオプションは,ファイルの特定の形式をテストします.(ファイルの すべてですが,すべてのファイルが同じではありません!)
これらのオプションは,特定のアクセス許可をテストします.
これらのオプションはその他のファイルの特徴を調査します.
これらのオプションは文字列の特徴をテストします.文字列はtest
に対して引用符で囲みませんが,例えばスペースのような,シェルで特別な意
味を持つ文字を保護するために,それらを引用符で囲む必要があるかもしれま
せん.
数値の関係です.引数は,完全な数値(負も可能です),または,string
の長さを評価する特別な式-l string
にする必要があります.
例えば以下のようにします.
test -1 -gt -2 && echo yes => yes test -l abc -gt 1 && echo yes => yes test 0x100 -eq 1 error--> test: integer expression expected before -eq |
test
の連結 通常の論理結合子です.
expr
: 式の評価
expr
は式を評価し,結果を標準出力に書き出します.それぞれの式
のトークンは,分離している引数にする必要があります.
オペランドは数字または文字列のどちらかになります.expr
は,あ
らゆるものが,適用されているオペレーションに依存して,整数または文字列
がオペランドの位置に存在することを強制します.
文字列はexpr
対し引用符で囲みませんが,例えばスペースのような,
シェルで特別な意味を持つ文字を保護するために,それらを引用符で囲む必要
があるかもしれません.
演算子は,挿入辞シンボルや前置キーワードとして与えることができます.カッ コは,通常の方法のグループとして使用してもかまいません(しかし,シェル がカッコを評価することを避けるために,カッコを引用符で囲む必要がありま す).
0 式がnullでも0でもない場合. 1 式がnullまたは0の場合. 2 有効な式の場合. |
16.4.1 文字列式 | + : match substr index length | |
16.4.2 数式 | ||
16.4.3 expr の関係式 | | & < <= = == != >= > | |
16.4.4 expr の使用例 | Examples. |
expr
は,パターンマッチングと,その他の文字列演算子をサポート
します.これらは,(次のセクションの)数字と関係の両演算子より低い優先順
位になります.
^
が暗黙に前置された(基本的にGNU流のgrep
の)正規表
現と考えられます.最初の引数は,この正規表現に対しマッチの評価がなされ
ます.
マッチの評価が成功し,regexが`\('と`\)'を使用している
場合,:
式は,サブ式にマッチしたstringの一部となります.そ
れ以外の場合はマッチした文字の数を返します.
マッチの評価に失敗した場合,regexで`\('と`\)'が使用さ
れていれば:
演算子はnull文字を返し,それ以外では0を返します.
最初の`\( ... \)'の組のみ,戻り値に関係します.追加の組は,正 規表現演算子のグループ化の意味しかありません.
正規表現内では,\+
,\?
,そして\|
は,それぞれ,1以
上,ゼロ以上,オア分離の選択肢の演算子です.SunOSとその他の
expr
はこれらを通常の文字として扱います.(POSIXは,
どちらの動作も許可します.) 正規表現の構文の詳細は,See section `Regular Expression Library' in Regex. 例は16.4.4 expr
の使用例
にあります.
/
の場合でも,
tokenを文字列として解釈します.これで,expr length + "$x"
やexpr + "$x" : '.*/\(.\)'
のテストが可能となり,$xの値が
(例えば)/
やindex
に偶然なった場合でも,正しく動作します.
この演算子はGNUの拡張です.移植性の高いシェルスクリプトでは,
+ "$token"
の代わりに" $token" : ' \(.*\)'
を使用
すべきです.
expr
にキーワードとして文字列を解釈させるために,quote
演算子を使用する必要があります.
expr
は,通常の算術演算子をサポートし,優先順位は順に増加しま
す.(前のセクションの)文字列演算子は,より順位の低い演算子で,(次のセ
クションの)連結子は,より順位が高くなります.
expr
の関係式
expr
は,通常の論理結合と関係式をサポートします.これらは(前
のセクションの)文字や数字の演算子より優先順位が高くなっています.ここ
に,低い優先順位を最初にしたリストがあります.
==
は=
の同義語です.expr
は最初に,両方の引数を数字に強制
し,数値の比較を行います.どちらかの強制が失敗した場合,
LC_COLLATE
で指定されている文字の対応表の順序を使用して,辞書的な
比較を行います.
expr
の使用例 シェルのメタ文字を引用符で囲むものを含む例として以下のようなものがあり ます.
Bourne互換シェルで,シェル変数foo
に1を加えます.
foo=`expr $foo + 1` |
$fname
に保存されているファイル名のディレクトリ以外の部分を,
/
を含めずに出力します.
expr $fname : '.*/\(.*\)' '|' $fname |
\+
が演算子だということを表示する例です.
expr aaa : 'a\+' => 3 |
expr abc : 'a\(.\)c' => b expr index abcdef cz => 3 expr index index a error--> expr: syntax error expr index quote index a => 0 |
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |