💻

bashのtestコマンドのオプション

2023/03/05に公開

概要

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
GitHubで編集を提案

Discussion