test コマンド

目的

条件式を評価します。

構文

test Expression

または

[ Expression ]

説明

test コマンドは、Expression パラメーターを評価し、値が真であれば、ゼロ (真) 終了値を戻します。真でなければ、test コマンドはゼロ以外の (偽) 終了値を戻します。 パラメーターがない場合も、test コマンドは、ゼロ以外の終了値を戻します。

要件:
  • コマンドの第 2 形式では、[ ] (大括弧) はブランク・スペースで囲まなければなりません。
  • C シェルでは、明示的にファイル名をテストしなければなりません。ファイル名置換 (グロビング) を使用すると、シェル・スクリプトは終了します。

test コマンドは、関数と演算子を別個のパラメーターとして処理します。Expression パラメーターは真または偽の条件が検査されるステートメントです。このパラメーターを作成するには以下の関数を使用します。

項目 説明
-b FileName 指定した FileName が存在し、ブロック・スペシャル・ファイルであれば真の終了値を戻します。
-c FileName 指定した FileName が存在し、キャラクター・スペシャル・ファイルであれば真の終了値を戻します。
-d FileName 指定した FileName が存在し、ディレクトリーであれば真の終了値を戻します。
-e FileName 指定した FileName が存在すれば真の終了値を戻します。
-fFileName 指定した 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 によって真が示されても、読み取り専用ファイルシステム上では FileName は書き込み可能ではありません。
-x FileName 指定した FileName が存在し、実行フラグがオンであれば真の終了値を戻します。指定したファイルが存在し、それがディレクトリーである場合は、True の 終了値によって、現行プロセスがそのディレクトリーの検索許可を 持っていることが示されます。
-z String1 String1 変数の長さが 0 (ゼロ) であれば真の終了値を戻します。
String1= String2 String1 変数と String2 変数が同一であれば真の終了値を戻します。
String1!=String2 String1 変数と String2 変数が同一でなければ真の終了値を戻します。
String1 String1 変数がヌル・ストリングでなければ真の終了値を戻します。
Integer1 -eq Integer2 Integer1 変数と Integer2 変数が代数式で等しければ真の終了値を戻します。 -ne, -gt, -ge, -lt, -le のいずれかの比較を -eq の代わりに使用できます。
file1 -nt file2 file1file2 よりも新しければ真。
file1 -ot file2 file1file2 よりも古ければ真。
file1 -ef file2 file1file2 の別の名前であれば真。

これらの関数は以下の演算子と組み合わせることができます。

項目 説明
! 単項否定演算子。
-a 2 項 AND 演算子。
-o 2 項 OR 演算子。(-a 演算子は -o 演算子より優先順位が高い)。
¥(Expression¥) グループ化のための括弧。

終了状況

このコマンドは、以下の終了値を返します。

項目 説明
0 Expression パラメーターは真です。
1 Expression パラメーターが偽かまたはありません。
>1 エラーが発生しました。

  1. ファイルが存在し、空でないかどうかをテストする場合には、以下のコマンドを入力します。
    
    if test ! -s "$1"
    then
       echo $1 does not exist or is empty.
    fi

    シェル・プロシージャーに対して最初の定位置パラメーター $1 で指定したファイルが存在しなければ、test コマンドはエラー・メッセージを表示します。$1 が存在し、そのサイズが 0 よりも大きければ、test コマンドは何も表示しません。

    注: -s 機能とファイル名の間には、スペースが必要です。

    $1 の前後に二重引用符を付けると、$1 の値が null の文字列であってもテストが正確に機能します。引用符を省略し、$1 が空ストリングであれば、test コマンドは、エラー・メッセージ「test: argument expected」を表示します。

  2. 複雑な比較を実行する場合には、以下のように入力します。
    if [ $# -lt 2 -o ! -e "$1" ]
    then
       exit
    fi

    定位置パラメーターが 2 つより少ないか、$1 で指定されるファイルが存在しないと、シェル・プロシージャーは終了します。特殊シェル変数 $# は、このシェル・プロシージャーを開始したコマンド・ラインに入力された定位置パラメーターの数を表します。

オペレーティング・システムおよびデバイスの管理」のシェルでは、シェルの一般的な説明、シェルの理解に役立つ用語の定義、ならびにより有効なシェル機能の説明を行います。

ファイル

項目 説明
/usr/bin/test test コマンドが入っています。