bash の trap を複数指定する方法
bashスクリプトでシグナルハンドラを定義出来るtrap
は大変便利だが、trap
を複数回呼び出すと最後に書いたtrap
の内容で上書きされてしまう。
↓例 melpon.org
別段シグナルハンドラを複数定義したいことも普通は無いが、0 番(終了時に必ず呼ばれる)には結構指定したいものが増えがちではないだろうか。
そこで、自前で複数保持出来るtrap
を今即興で書きました
# zlib/libpng License TRAP_COMMAND_STR=() function trap() { TRAP_COMMAND_STR[$2]="${TRAP_COMMAND_STR[$2]} $1 ;" builtin trap "${TRAP_COMMAND_STR[$2]}" $2 }
どんどん;
で区切って追加することで実現している。
なお、これだとシグナルハンドラのリセットが出来ないのでまぁそういう時はbuildin trap
か自前のtrapを弄るか。
↓動作例