* eオプションでエラー処理 [#b2e7afe9]

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

#sh(plain){{
 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