💻
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