表題の通り。正常に最後まで終われば問題ないのだが、`kill`コマンドや”Ctrl-C“で終了させた時に決まった処理をさせたい。
■ 環境
- sh
■ trap
ビルトインコマンドの`trap`を使う。例えば下記の通り。
#!/bin/sh
signals() {
echo "exit"
exit
}
trap signals SIGHUP SIGINT SIGKILL SIGTERM
echo "pid = $$"
while true
do
/bin/echo -n "."
sleep 3
done
echo "finish."
# EOF
`trap`の引数は下記の通りである。
trap 【処理 or 関数】 【シグナルの指定】
このスクリプトを実行する。
$ ./test.sh
pid = 17717
....
終了時に”signals()“を呼ぶようにしてみた。”exit“と出力して終了。
“Ctrl-C“で終了すると下記のようになる。
$ ./test.sh
pid = 17717
.................................^Cexit
$
続いて別のターミナルから`kill`コマンドで停止してみる。
$ ./test.sh
pid = 17792
........exit
$
以上。