hoge.sh
# !/bin/bash
NOTIFY_MAIL_TOS='who@dummy.co.jp'
function sendErrorMail() {
local body="Error occurred."
local subject="Error mail !!!"
mail -s "${subject}" "${NOTIFY_MAIL_TOS}"
}
set -eu
trap "echo 'Error occurred.'; sendErrorMail; exit 1" ERR
## メインの処理
コマンドたち(「メインの処理」以降)で終了コード<>0が発生したときに、trapコマンドが発動してメールが送れます。
trapコマンドも'set -eu'も意外に使われていないことが多いですが、
プログラム(といってもbashスクリプトですが)を書く上でエラーハンドリングは、欠かせないので重宝しています。
'set -e'にしていても、trapコマンドが発動してくれるので、いい感じです。
大量に$?で終了コード判定をしなくても済むので、可読性も高くなります。
蛇足です。
・ おそらくたいていのbashバージョンで利用できると思います。
・ "trap ~~~ ERR"の"ERR"の部分については、シグナルについて確認してください。
・ シグナルの部分を変えると「ユーザーキャンセル時(Ctrl + C)は〇〇〇する」という制御できるようになります。
コメントなどありましたら、いただけると嬉しいです!!