TEST(1)

名称
test, [ - 条件式評価ユーティリティ

書式
test expression [ expression]

解説
test ユーティリティは、式を評価し、結果が真なら 0 (true) を、 偽なら 1 (false) を戻り値として返します。 引数の式がない場合も 1 (false) を返します。

演算子やフラグなどは、一つ一つ独立な引数として test ユーティリティに渡します。

式は以下の基本要素から構成されます:

-b file
    file が存在し、それがブロック特殊ファイルであるならば真になります。

-c file
    file が存在し、それがキャラクタ特殊ファイルであるならば真になります。

-d file
    file が存在し、それがディレクトリであるならば真になります。

-e file
    file が存在すれば真になります (ファイルの種類に依りません)。

-f file
    file が存在し、それが通常ファイルであるならば真になります。

-g file
    file が存在し、それに setgid フラグが立っていれば真になります。

-h file
    file が存在し、それがシンボリックリンクであるならば真になります。 この演算子は、本プログラムの以前のバージョンとの互換性のためにあります。 この演算子があることに依存しないようにしてください。 代りに -L を使用してください。

-k file
    file が存在し、それにスティッキビットが立っていれば真になります。

-n string
    string の長さが 0 でなければ真になります。

-p file
    file が名前つきパイプ (FIFO) であるならば真になります。

-r file
    file が存在し、それが読み込み可能であれば真になります。

-s file
    file が存在し、そのファイルサイズが 0 より大きければ真になります。

-t file_descriptor
    ファイル記述子番号が file_descriptor であるファイルがオープンされており、これが端末に 結びつけられていれば 真になります。

-u file
    file が存在し、それに setuid フラグが立っていれば真になります。

-w file
    file が存在し、書き込み可能であれば真になります。 真ということは、 書き込み可能フラグが立っていることを表すに過ぎません。 ファイルが読み込み専用のファイルシステム上にあると、たとえ この判定が真であっても書き込みはできません。

-x file
    file が存在し、実行可能であれば真になります。 真ということは、 実行可能フラグが立っていることを表すに過ぎません。 file がディレクトリの場合、真は file が検索可能であることを表します。

-z string
    string の長さが 0 であれば真になります。

-L file
    file が存在し、シンボリックリンクの場合に真になります。

-O file
    file が存在し、 その所有者と本プロセスの実効ユーザ ID とがマッチする場合に真になります。

-G file
    file が存在し、 そのグループと本プロセスの実効グループ ID とがマッチする場合に真になります。

-S file
    file が存在し、ソケットの場合に真になります。

file1 -nt file2
    file1 が存在し、 file2 よりも新しい場合に真になります。

file1 -ot file2
    file1 が存在し、 file2 よりも古い場合に真になります。

file1 -ef file2
    file1 と file2 が存在し、これらが同一のファイルを参照する場合に真になります。

string
    string が空文字列でなければ真になります。

s1 = s2
    文字列 s1 と s2 が同一であれば真になります。

s1 != s2
    文字列 s1 と s2 が同一でなければ真になります。

s1 < s2
    文字列 s1 が文字列 s2 に対し、文字のバイナリ順において前に来る場合に真になります。

s1 > s2
    文字列 s1 が文字列 s2 に対し、文字のバイナリ順において後に来る場合に真になります。

n1 -eq n2
    整数 n1 と n2 が等しければ真になります。

n1 -ne n2
    整数 n1 と n2 が等しくなければ真になります。

n1 -gt n2
    整数 n1 が n2 がより大きければ真になります。

n1 -ge n2
    整数 n1 が n2 より大きいか等しければ真になります。

n1 -lt n2
    整数 n1 が n2 より小さければ真になります。

n1 -le n2
    整数 n1 が n2 より小さいか等しければ真になります。

file がシンボリックリンクの場合、 基本要素 -h と -L の場合を除き、 test は参照を手繰りファイルを得て、それに対して式を評価します。

これらの基本要素は以下の演算子と組み合わせることができます:

! expression
    expression が偽ならば真になります。

expression1 -a expression2
    expression1 と expression2 の両方が真ならば真になります。

expression1 -o expression2
    expression1 と expression2 のどちらかが真ならば真になります。

(expression)
    expression が真ならば真になります。

-a 演算子は -o 演算子より優先されます。

シェルによっては、本ユーティリティと同一の、組み込みの test コマンドを提供しています。 builtin(1) マニュアルページを参照してください。

文法の曖昧性
test に使用されている文法は本質的に曖昧です。 ある程度の一貫性を確保するため、 p1003.2 の D11.2/4.62.4 節で述べられているケースに関しては、この標準化文書が 規定する規則に一貫して従った評価が行われます。 しかしその他のケースでは、コマンドの持つ意味の曖昧さに左右されます。

戻り値
test ユーティリティは次のいずれかの値を返します。

0   式を評価した結果が真である

1   式を評価した結果が偽であるか、式がない

>1  エラーが発生した

関連項目
builtin(1), expr(1), sh(1), symlink(7)

規格
test ユーティリティは、 p1003.2 仕様の上位互換実装です。