eオプションでエラー処理

set -eすると、式が非ゼロな終了コードを返した時点で、スクリプトは勝手にexitする。 例えば、

 set -e
 false
 if [ "$?" -ne 0 ]; then
     echo error; exit 1;
 fi
 echo done

は、実行すると何も表示せずに終了する。これが下のようにset +eなら、

 set +e
 false
 if [ "$?" -ne 0 ]; then
     echo error; exit 1;
 fi
 echo done

「error」と表示して終了する。なお、set -eすると$?を使ったエラー処理が出来なくなるので、代わりに下のようにしてエラーを補足する。

 set -e
 false || { echo error; exit 1; }
 set +e
 false || { echo error; exit 1; }

上のようにすると、いずれも「error」と表示して終了する。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS