bash を使おう!③ : 終了ステータスと条件文

今回はコマンドの終了ステータスと条件文について説明する。


終了ステータス

終了ステータスの「真(true)」は「0」であり、それ以外は「偽(false)」となる。一般的な条件判定とは真逆なので注意が必要だ。

終了ステータスは変数「$?」で確認できる。

$ test 1 -eq 1 ; echo $?
0
$ test 1 -eq 2 ; echo $?
1
$
$ if test 1 -eq 1
then
echo “OK”;
else
echo “NG”;
fi
OK
$

「test 1 -eq 1」は「真(true)」なので「OK」が表示される。


test コマンド

「test」コマンドと「[]」は同義である。(実質は「[」がコマンドであり、引数の末尾が「]」である必要がある)

test コマンドは、引数で指定された条件により終了ステータスを変化させるコマンドである。

引数はスペースで必ず区切られている必要がある。

$ if test 1 -eq 1; then echo “OK”; else echo “NG”; fi
OK
$ if [ 1 -eq 1 ]; then echo “OK”; else echo “NG”; fi
OK
$

以下は引数の意味

実行

$ if [ 1 -eq 1 ]; then echo “同じ”; else echo “異なる”; fi
同じ
$ if [ “abc” = “def” ]; then echo “同じ”; else echo “異なる”; fi
異なる
$ if [ “abc” = “abc” ]; then echo “同じ”; else echo “異なる”; fi
同じ
$ if [ “abc” != “abc” ]; then echo “True”; else echo “False”; fi
False
$ if [ -d “/tmp” ]; then echo “True”; else echo “False”; fi
True
$ if [ -f “/tmp” ]; then echo “True”; else echo “False”; fi
False
$

exit コマンド

exit コマンドは終了ステータスを返すコマンドである。プログラムは通常、「0」かそれ以上の整数を返す事になっているので、マイナス値を返すべきではない。エラーで終了する場合は、返すべきはエラー番号である。

実行

$ if ( exit 0 ); then echo “True”; else echo “False”; fi
True
$ if ( exit 1 ); then echo “True”; else echo “False”; fi
False
$

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です