trap ['handler'] [event …]
trap は、ある種類の例外条件をインターセプトします。 どのシグナルも、シグナル番号に対応するイベントを指定することで、インターセプトできます。
ERR のイベントが起きると、trap は、ゼロ以外の 終了状況を受け取った後、ハンドラーを起動します。これの例外は、if、while、および until ステートメントの中 の条件です。このトラップは、関数内で継承されません。
トラップ番号 0 または EXIT により、trap は、シェルの終了中にハンドラーを起動します。関数内では 、関数の終了中に起動されます。
他のすべてのイベントは、シグナル番号またはシグナル名に対応します (有効なシグナル番号とその名前の一覧については 、kill を参照してください)。シェルに入るときに シグナルが無視されている場合、シェルはどのトラップ とも関係なくそのシグナルを無視し続けます。
システム初期化によって、SIGIOERR シグナルの値は ignore に 設定されるので、この シグナルを trap で設定することはできません。
handler 引数はコマンド・リストです。通常、複数のワードであるため、引用符で囲んで単一の引数に見えるようにする 必要があります。コマンド・リストは、トラップ関数が最初に起動されたときに走査されま す。トラップ条件が発生すると、シェルは再びコマンド・リストを走査して、コマンドを実行します。引数が欠落しているか、または - (ダッシュ) 引数があると、デフォルトのトラップ条件はリセットされます。 ヌル引数 ('') があると、トラップ条件は無視されます。
引数がまったくない場合、trap は、すべてのトラップおよびコマンド を出力します。
trap は特殊組み込みシェル・コマンドです。
trap 'rm –f /tmp/xyz$$; exit' ERR EXIT
trap 'read REPLY?"ABORT??"
case $REPLY in
y) exit 1;;
esac' 2
trap 'cp $HISTFILE $HOME/old_hist.bak; exit' ALRM
POSIX.2, X/Open 移植性ガイドX/Open 移植性ガイド.
sh