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 でチェックした条件はこの後で教える方法で使えるよ!その基礎になるからしっかりおさえておこう!