EN JA
TEST(1)
TEST(1) FreeBSD General Commands Manual TEST(1)

名称

test, [条件評価ユーティリティ

書式

test expression

[ expression ]

解説

test ユーティリティは、式を評価し、真と評価するなら、0 (真) の終了ステータスを、返します。そうでなければ、1 (偽) を返します。また、式がないなら、 test は、1 (偽) を返します。

すべての演算子とフラグは、 test ユーティリティへの個別の引数です。

次のプライマリ (primary) は、式を構成するために使用されます:

-b file
file が存在し、ブロック特殊ファイルであるなら、真です。
-c file
file が存在し、キャラクタ特殊ファイルであるなら、真です。
-d file
file が存在し、ディレクトリであるならば、真です。
-e file
file が存在するなら、真です (タイブにかかわらす)。
-f file
file が存在し、通常ファイルであるなら、真です。
-g file
file が存在し、セットグループ ID (set group ID) フラグが設定されているなら、真です。
-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 が存在し、セットユーザ ID (set user ID) フラグが設定されているなら、真です。
-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
file1file2 が存在し、同じファイルを参照するなら、真です。
string
string が空でないなら、真です。
s1 = s2
文字列 s1s2 が同一であるなら、真です。
s1 != s2
文字列 s1s2 が同一でないなら、真です。
s1 < s2
文字列 s1 が、それらの文字のバイナリ値に基づいて s2 の前に来るなら、真です。
s1 > s2
文字列 s1 が、それらの文字のバイナリ値に基づいて s2 の後に来るなら、真です。
n1 -eq n2
整数 n1n2 が代数的に等しいなら、真です。
n1 -ne n2
整数 n1n2 が代数的に等しくないなら、真です。
n1 -gt n2
整数 n1 が整数 n2 より代数的に大きいなら、真です。
n1 -ge n2
整数 n1 が整数 n2 より代数的に大きいか等しいなら、真です。
n1 -lt n2
整数 n1 が整数 n2 より代数的に小さいなら、真です。
n1 -le n2
整数 n1 が整数 n2 より代数的に小さいか等しいなら、真です。

file がシンボリックリンクであるなら、 test は、 -h-L のプライマリを除いて、完全に参照先のファイルとして、次にそのファイルに対して式を評価します。

これらのプライマリは、次の演算子と組み合わせることができます:

! expression
expression が偽であるなら、真です。
expression1 -a expression2
expression1expression2 の両方が真であるなら、真です。
expression1 -o expression2
expression1expression2 のどちらかが真であるなら、真です。
( expression )
expression (式) が真であるなら、真です。

-a 演算子には、 -o 演算子より高い優先順位があります。

いくつかのシェルは、このユーティリティに似ているか、または同一の組み込み test コマンドを提供しています。 builtin(1) マニュアルページを調べてください。

文法のあいまい性

test 文法は、本質的にあいまいです。ある程度の一貫性を保証するために、 IEEE Std 1003.2 (“POSIX.2”) セクション D11.2/4.62.4 に記述されている場合、標準は、標準の文書に指定された規則に従って一貫して評価されます。他のすべての場合は、コマンドのセマンティックスのあいまい性に従います。

特に、 -a, -o, ( または ) を含む式のみ、あいまいとなるかもしれません。

終了ステータス

test ユーティリティは、次の値の 1 つで終了します:
0
真と評価された式。
1
偽と評価された式、または式がない。
>1
エラーが起こった。

使用例

POSIX 機能のみを使用して test FILE1 -nt FILE2 を実装します:

test -n "$(find -L -- FILE1 -prune -newer FILE2 2>/dev/null)"

他のタイムスタンプを比較するために -newerca のような非標準の find(1) プライマリを使用して、これを修正することができます。

互換性

他のいくつかの実装との互換性については、 = プライマリを同じ意味がある == と置き換えることができます。

規格

test ユーティリティは、 IEEE Std 1003.2 (“POSIX.2”) 仕様のスーパセットを実装しています。プライマリ <, ==, >, -ef, -nt, -ot, -G-O は、拡張です。

バグ

-a-o の両側は、常に評価されます。例えば、次のコマンドは、たとえ前の式が偽を示したとしても、 file の書き込み可能な状態をテストし、ファイルシステムへの余計なアクセスをもたらします:
[ -z abc -a -w file ]
これを避けるには、次のように書きます:
[ -z abc ] && [ -w file ]
June 1, 2013 FreeBSD