コマンド失敗時にスクリプトを停止する方法

"set -e"を仕込んでおくと、スクリプト内のコマンドがどれかひとつでも失敗した場合にスクリプトそのものをそこで停止できます。

サンプル

mir@t43:~/tmp$ cat hoge.sh
#!/bin/sh
set -e

echo 1
mkdir hoge
rm hoge
echo 2

"set -e"が無いとecho 2が実行されると思いますが、この"set -e"により実行結果は以下のようになります。

mir@t43:~/tmp$ ./hoge.sh 
1
rm: cannot remove `hoge': ディレクトリです

"echo 2"は実行されませんでした。

このエラー発生時に何かの処理を走らせたければ、trapを使えばいいです。

set -e
trap "echo '*** script failed ***'" 0