ロックファイルや一時ファイルの削除など、シェルスクリプトの終了時に 実行したい処理というのがあります。 異常終了時に削除しておかなければならない場合など 毎回記述するのは大変です。
そんなときに使える trap というコマンドがあります。
trap コマンドは次のように処理とシグナルを指定します。
trap "echo hogehoge" EXIT
とりあえずコマンドラインで試してみます。
INT は [Ctrl]+[c] などによる割り込みのシグナルです。
$ trap "echo hogehoge" INT
[Ctrl]+[c] を押すと "echo hogehoge" を実行します。
$ trap "echo hogehoge" INT $ ^Chogehoge $ ^Chogehoge
解除するにはシグナルだけを指定します。
$ trap INT $ ^C
[Ctrl]+[c] を押しても何もおこりません。
シェルスクリプトの中に 次のように書いておけば 終了時にファイルを削除してくれます。
trap "rm text1.txt" EXIT
EXIT はプロセス終了時のシグナルなので シェルスクリプトの終了をトラップしてくれます。
処理の進行状態によって削除するファイルが増えるときは 次のように再定義する方法で対応することもできます。
DELFILE="${DELFILE} test1.txt"
trap "rm ${DELFILE}" EXIT
(...処理....)
DELFILE="${DELFILE} test2.txt"
trap "rm ${DELFILE}" EXIT
現在の設定内容は "-p" オプション、 シグナルの一覧は "-l" オプションで 表示させることができます。