test
コマンド
終了ステータスの使い方って気になるなぁ
今回は終了ステータスと
密接な関わりを持つ
test
を学ぼう!
test
は指定した条件を調べて
結果を終了ステータスで返すよ
test [オプション]...
-d
オプションは以下のコマンドを実行してみよう
test -d /home/midori
実行したけど何も表示されないね
結果は画面出力ではなく終了ステータスで返されているんだ終了ステータスを確認してみよう!
echo $?
終了ステータスは
?
変数に格納されるんだよね!0
0
が表示されたよ!ということは成功だね!これで/home/midori
ディレクトリが存在している」そういうことだね!
test
は条件が満たされていれば 0
そうでなければ 1
を返すよ今度は 「通常ファイルが存在しているか」を チェックするオプションだよ同じように以下を実行してみよう
-f
オプションを使ってみようこれはtest -f /home/midori
実行したよ!
echo $?
結果は終了ステータスで返って来ているんだよね!
1
今度は
1
が表示された!/home/midori
はディレクトリだから通常のファイルじゃないってことだねそういうことだね
test
はこうやって条件を調べるのに使われるんだ[
コマンドtest
はよく使われるコマンドなんだそのため簡単に使える別名[
が用意されているよコマンドに別名があるの?それは初耳!
さっきの
test -d /home/midori
を[
を使って書き換えてみようただし
[
を使う場合は最後を ]
で閉じるというルールがあるんだだからこのように書くよ[ -d /home/midori ]
なんだか「ひとまとまりの条件」 というのがわかりやすいね!
じゃあ終了ステータスを確認してみようか
echo $?
test
と [
は同じものだから結果は 0
だと思うなぁ0
ちゃんと
test
と同じ結果だね!たいていの場面で
test
よりも[
が使われるよこの書き方に慣れておこう!test
でよく使う指定をまとめたよ!コマンド | 説明 |
---|---|
[ -d PATH ] | パス PATH がディレクトリであれば成功 |
[ -f PATH ] | パス PATH が通常ファイルであれば成功 |
[ -e PATH ] | パス PATH が存在していれば成功 |
[ X -eq Y ] | 数値 X と Y が等しければ成功 |
[ X -ne Y ] | 数値 X と Y が異なれば成功 |
[ X -gt Y ] | 数値 X が Y より大きければ成功 |
[ X -ge Y ] | 数値 X が Y より大きいか等しければ成功 |
[ X -lt Y ] | 数値 X が Y より小さければ成功 |
[ X -le Y ] | 数値 X が Y より小さいか等しければ成功 |
[ -n TEXT ] | 文字列 TEXT の長さが1以上なら成功 |
[ -z TEXT ] | 文字列 TEXT の長さが0なら成功 |
[ TEXT1 == TEXT2 ] | 文字列 TEXT1 と TEXT2 が等しければ成功 |
[ TEXT1 != TEXT2 ] | 文字列 TEXT1 と TEXT2 が異なれば成功 |
[ ! 条件 ] | 条件 が失敗なら成功 |
[ 条件1 -a 条件2 ] | 条件1 と 条件2 が両方成功なら成功 |
[ 条件1 -o 条件2 ] | 条件1 と 条件2 のどちらかが成功なら成功 |
うわぁ!いっぱいある!
本当はもっとあるけど必要になったら少しづつ覚えればいいよ
今回は
test
とその別名 [
を覚えたよ!色々な条件を判定して終了ステータスで結果を教えてくれるんだ!test
でチェックした条件はこの後で教える方法で使えるよ!その基礎になるからしっかりおさえておこう!