GNU Core Utilities/test
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
コマンドの動作に大きな違いはありませんが、以下の点に注意が必要です。
主な違い
編集[
コマンドとの互換性test
コマンドは[
という名前のエイリアス(またはコマンド)としても動作します。両者は実質的に同じ動作をしますが、[
は括弧が必要なため、以下のように使うことができます。
[ 条件式 ]
- GNU coreutils 版を FreeBSD で使う方法
coreutils
パッケージをインストールするとgtest
という名前で GNU 版のtest
コマンドが使える。
pkg install coreutils gtest -e file.txt
詳しくは、それぞれの環境で man test
を確認してください。