test コマンド
目的
条件式を評価します。
構文
test 式
または
[ 式 ]
説明
test コマンドは、Expression パラメーターを評価し、値が真であれば、ゼロ (真) 終了値を戻します。 真でなければ、test コマンドはゼロ以外の (偽) 終了値を戻します。 パラメーターがない場合も、test コマンドは、ゼロ以外の終了値を戻します。
- コマンドの第 2 形式では、[ ] (大括弧) はブランク・スペースで囲まなければなりません。
- C シェルでは、明示的にファイル名をテストしなければなりません。 ファイル名置換 (グロビング) を使用すると、シェル・スクリプトは終了します。
test コマンドは、関数と演算子を別個のパラメーターとして処理します。 Expression パラメーターは真または偽の条件が検査されるステートメントです。 このパラメーターを作成するには以下の関数を使用します。
| 項目 | 説明 |
|---|---|
| -b FileName | 指定した FileName が存在し、ブロック・スペシャル・ファイルであれば真の終了値を戻します。 |
| -c FileName | 指定した FileName が存在し、キャラクター・スペシャル・ファイルであれば真の終了値を戻します。 |
| -d FileName | 指定した FileName が存在し、ディレクトリーであれば真の終了値を戻します。 |
| -e FileName | 指定した FileName が存在すれば真の終了値を戻します。 |
| -f filename | 指定した FileName が存在し、通常ファイルであれば真の終了値を戻します。 |
| -g FileName | 指定した FileName が存在し、そのセット・グループ ID が設定されていれば真の終了値を戻します。 |
| -h FileName | 指定した FileName が存在し、シンボリック・リンクであれば真の終了値を戻します。 |
| -k FileName | 指定した FileName が存在し、そのスティッキー・ビットが設定されていれば真の終了値を戻します。 |
| -L FileName | 指定した FileName が存在し、シンボリック・リンクであれば真の終了値を戻します。 |
| -n String1 | String1 変数の長さがゼロでなければ真の終了値を戻します。 |
| -p FileName | 指定した FileName が存在し、名前付きパイプであれば真の終了値を戻します。 |
| -r FileName | 指定した FileName が存在し、現行プロセスによる読み取りが可能であれば真の終了値を戻します。 |
| -s FileName | 指定した FileName が存在し、サイズがゼロより大きければ真の終了値を戻します。 |
| -t FileDescriptor | FileDescriptor で指定したファイル・ディスクリプター番号を持つファイルがオープンされており、端末と関連していれば、真の終了値を戻します。 |
| -u FileName | 指定した FileName が存在し、そのセット・ユーザー ID ビットが設定されていれば真の終了値を戻します。 |
| -w FileName | 指定した FileName が存在し、書き込みフラグがオンであれば真の終了値を戻します。 ただし、test が true を示している場合でも、読み取り専用ファイル・システムでは FileName は書き込み可能になりません。 |
| -x FileName | 指定した FileName が存在し、実行フラグがオンであれば真の終了値を戻します。 指定したファイルが存在し、それがディレクトリーである場合は、True の 終了値によって、現行プロセスがそのディレクトリーの検索許可を 持っていることが示されます。 |
| -z String1 | String1 変数の長さが 0 (ゼロ) であれば真の終了値を戻します。 |
| 文字列 1 String2 | String1 変数と String2 変数が同一であれば真の終了値を戻します。 |
| String1!=String2 | String1 変数と String2 変数が同一でなければ真の終了値を戻します。 |
| String1 | String1 変数がヌル・ストリングでなければ真の終了値を戻します。 |
| Integer1 -eq Integer2 | Integer1 変数と Integer2 変数が代数式で等しければ真の終了値を戻します。 -ne, -gt, -ge, -lt, -le のいずれかの比較を -eq の代わりに使用できます。 |
| file1 -nt file2 | file1 が file2 よりも新しければ真。 |
| file1 -ot file2 | file1 が file2 よりも古ければ真。 |
| file1 -ef file2 | file1 が file2 の別の名前であれば真。 |
これらの関数は以下の演算子と組み合わせることができます。
| 項目 | 説明 |
|---|---|
| ! | 単項否定演算子。 |
| -a | 2 項 AND 演算子。 |
| -o | 2 項 OR 演算子。(-a 演算子は -o 演算子より優先順位が高い)。 |
| ¥ (Expression¥) | グループ化のための括弧。 |
終了状況
このコマンドは、以下の終了値を戻します。
| 項目 | 説明 |
|---|---|
| 0 | Expression パラメーターは真です。 |
| 1 | Expression パラメーターが偽かまたはありません。 |
| >1 | エラーが発生しました。 |
例
- ファイルが存在し、空でないかどうかをテストするには、次のコマンドを入力します。
if test ! -s "$1" then echo $1 does not exist or is empty. fiシェル・プロシージャーに対する最初の定位置パラメーターによって指定されたファイルの場合、$1が存在しない場合、 test コマンドはエラー・メッセージを表示します。 指定する場合は、$1存在し、サイズが 0 より大きい場合、 test コマンドは何も表示しません。
注: -s 機能とファイル名の間には、スペースが必要です。
前後の引用符$1場合であっても, テストが正しく機能することを確認してください。$1ヌル・ストリングです。 引用符が省略され、$1空ストリングの場合、 test コマンドはエラー・メッセージを表示します。test: argument expected.
- 複合比較を行うには、次のように入力します。
if [ $# -lt 2 -o ! -e "$1" ] then exit fiシェル・プロシージャーに指定された定位置パラメーターが 2 つより少ない場合、または次のように指定されたファイル$1存在しない場合は、シェル・プロシージャーは終了します。 特殊シェル変数$#このシェル・プロシージャーを開始するコマンド行に入力された定位置パラメーターの数を表します。
「 オペレーティング・システムおよびデバイス管理 」の「 シェル 」では、シェル全般について説明し、シェルの理解に役立つ用語を定義し、より便利なシェル機能について説明しています。
ファイル
| 項目 | 説明 |
|---|---|
| /usr/bin/test | test コマンドが入っています。 |