ホーム > 環境・ユーティリティ > test

test: 条件式の評価

testコマンドは、シェルスクリプトで条件文を構成する際に使用されます。ファイルの種類の確認や、文字列および数値の比較など、さまざまな条件式を評価して真(0)または偽(1)を返します。この戻り値は、`if`文などの制御構造で活用されます。

概要

testコマンドは、与えられた式を評価し、結果が真であれば終了ステータス0を、偽であれば1を返します。これは主にシェルスクリプトの`if`、`while`文などの条件付き実行に使用されます。`[`コマンドは`test`コマンドの別の形式であり、`[[`はBash/Ksh/Zshで拡張機能を提供します。

主な機能

  • ファイルタイプと属性の検査
  • 文字列値の比較
  • 整数値の比較
  • 論理演算(AND、OR、NOT)

主なオプション

testコマンドは、さまざまな単項演算子および二項演算子を使用して条件式を評価します。

ファイル属性の検査

文字列比較

整数比較

論理演算子

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`test` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

使用例

testコマンドを活用したさまざまな条件式評価の例です。

ファイル存在有無の確認

if test -e /etc/passwd; then echo "/etc/passwdファイルが存在します。"; fi

`/etc/passwd`ファイルが存在するかどうかを確認します。

ディレクトリかどうかの確認

if test -d /tmp; then echo "/tmpはディレクトリです。"; fi

`/tmp`がディレクトリかどうかを確認します。

文字列比較

MY_VAR="hello"
if test "$MY_VAR" = "hello"; then echo "変数の値はhelloです。"; fi

変数`MY_VAR`の値が'hello'と同じかどうかを確認します。

整数比較

COUNT=15
if test "$COUNT" -gt 10; then echo "COUNTは10より大きいです。"; fi

変数`COUNT`の値が10より大きいかどうかを確認します。

論理AND演算

touch file.txt
if test -f file.txt -a -s file.txt; then echo "file.txtは存在し、空ではありません。"; fi
rm file.txt

`file.txt`が存在し、かつ空でないかを確認します。

testの代わりに`[`を使用

if [ -f /etc/hosts ]; then echo "/etc/hostsファイルがあります。"; fi

`test`コマンドは`[`で置き換えて使用できます。この場合、`]`で閉じる必要があります。

ヒントと注意点

testコマンドを使用する際の役立つヒントと注意点です。

主なヒント

  • `[`コマンドは`test`コマンドと同じであり、最後に`]`を閉じる必要があります。`[`と`]`はそれぞれ個別の引数として扱われるため、スペースが必須です。
  • `[[`コマンドはBash、Ksh、Zshでのみサポートされており、より強力な機能(正規表現、空白処理など)を提供します。`[[`内部では、変数を引用符で囲まなくても安全です。
  • 変数を使用する際は、常に二重引用符で囲むのが安全です(例: `test "$VAR" = "value"`)。これは、変数が空であったり空白を含んでいたりする場合に発生する可能性のあるエラーを防ぎます。
  • 整数比較には`-eq`、`-ne`、`-gt`、`-lt`、`-ge`、`-le`を使用し、文字列比較には`=`、`!=`、`-z`、`-n`を使用する必要があります。混同すると予期しない結果が生じる可能性があります。

同じカテゴリのコマンド