test コマンドは、ファイルの状態や文字列、数値のテストを行うコマンドです。シェルスクリプトなどで条件式として使用されます。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通しています。

基本的な使い方

編集
test 条件式

条件式が真であれば終了ステータス 0 を返し、偽であれば終了ステータス 1 を返します。

よく使われる条件式

編集

ファイルが存在するか確認

編集
test -e ファイル名

指定したファイルが存在する場合に真を返します。

ファイルがディレクトリか確認

編集
test -d ディレクトリ名

指定した名前がディレクトリであれば真を返します。

ファイルが読み取り可能か確認

編集
test -r ファイル名

指定したファイルが読み取り可能であれば真を返します。

文字列が空でないか確認

編集
test -n "文字列"

指定した文字列が空でない場合に真を返します。

数値の比較

編集
test 数値1 -eq 数値2

数値1 が数値2 と等しい場合に真を返します。その他にも以下の比較演算子が使用できます。

  • -eq : 等しい
  • -ne : 等しくない
  • -lt : より小さい
  • -le : 以下
  • -gt : より大きい
  • -ge : 以上

ファイルの存在確認

編集
if test -e file.txt; then
  echo "file.txt は存在します"
fi

数値の比較

編集
a=10
b=20
if test $a -lt $b; then
  echo "$a$b より小さい"
fi

文字列の比較

編集
str="hello"
if test "$str" = "hello"; then
  echo "文字列は 'hello' と一致します"
fi

FreeBSD 版との違い

編集

test コマンドの動作に大きな違いはありませんが、以下の点に注意が必要です。

主な違い

編集
  1. [ コマンドとの互換性
    • test コマンドは [ という名前のエイリアス(またはコマンド)としても動作します。両者は実質的に同じ動作をしますが、[ は括弧が必要なため、以下のように使うことができます。
    [ 条件式 ]
    
  2. GNU coreutils 版を FreeBSD で使う方法
    • coreutils パッケージをインストールすると gtest という名前で GNU 版の test コマンドが使える。
    pkg install coreutils
    gtest -e file.txt
    

詳しくは、それぞれの環境で man test を確認してください。