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
- 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 がシンボリックリンクであるなら、 test は、 -h と -L のプライマリを除いて、完全に参照先のファイルとして、次にそのファイルに対して式を評価します。
これらのプライマリは、次の演算子と組み合わせることができます:
- ! expression
- expression が偽であるなら、真です。
- expression1 -a expression2
- expression1 と expression2 の両方が真であるなら、真です。
- expression1 -o expression2
- expression1 と expression2 のどちらかが真であるなら、真です。
- ( 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 |