記事 同じシグナルに複数個のtrapを仕掛ける方法 #Shell 同じシグナルに何個かtrapを仕掛けたいけど、trapは上書きされてしまうので最後に仕掛けたコマンドしか実行されない。 解決 ちょっとやっつけな感じだけど、 trap -p で現在の内容が出力されるので at_exit () { trap "$1 ; $(trap -p EXIT | sed -E "s/^trap -- '(.*)' EXIT\$/\\1/")" EXIT } at_exit 'echo first' at_exit 'echo second' ってな感じで;で繋いだコマンドで再定義していけば追記していける。 汎用的にする 汎用的にするため、trapを正しく再定義すればこうなる。 trap () { if ((($# == 3)) && [[ $1 == '--' ]]) || ((($# == 2)) &