💻
bashのtestコマンドのオプション
概要
testコマンドは、終了ステータスで真偽値を返すコマンドです。
終了ステータスは$?
で取得できるので、
test -n "hoge"; echo $?
などのようにすると、結果を確認することができます。
終了ステータスが0
のとき真、1
のとき偽を表します。
if文でよく使われ、以下のように使われます。
VAR="hoge"
if test -n "$VAR"; then
echo "VAR is not empty"
fi
[]
を使って以下のように書くこともできます。(こちらの方がよくみかける)
if [ -n "$VAR" ]; then
オプションの一覧
文字列
オプション | 真になる条件 |
---|---|
-n | 引数が空でない文字列 |
-z | 引数が空の文字列 |
例
test -n "hoge"; echo $? # 0
test -z "hoge"; echo $? # 1
test -n ""; echo $? # 1
test -z ""; echo $? # 0
ファイル・ディレクトリ
オプション | 真になる条件 |
---|---|
-d | 引数が存在し、ディレクトリである |
-e | 引数が存在する |
-f | 引数が存在し、通常のファイルである |
-r | 引数が存在し、読み取り可能である |
-w | 引数が存在し、書き込み可能である |
-x | 引数が存在し、実行可能である |
例
test -d "path/to/dir"; echo $? # 0
test -f "path/to/file"; echo $? # 0
数字
オプション | 真になる条件 |
---|---|
-eq | 左辺が右辺と等しい数値 |
-ne | 左辺が右辺と等しくない数値 |
-gt | 左辺が右辺より大きい数値 |
-ge | 左辺が右辺以上の数値 |
-lt | 左辺が右辺より小さい数値 |
-le | 左辺が右辺以下の数値 |
例
test 1 -eq 1; echo $? # 0
test 1 -ne 1; echo $? # 1
test 3 -gt 1; echo $? # 0
test 1 -gt 3; echo $? # 1
ファイル記述子
オプション | 真になる条件 |
---|---|
-t | ファイル記述子がターミナルに設定されている |
例
test -t 0; echo $? # 0
Discussion