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 $ |