ちゃんと勉強した人なら当然なのでしょうが、私はちゃんと分かっていなかったのでメモ。
shuzo-kino.hateblo.jp
の補足的内容。
exitでは数字を渡して終了できるのですが……なんとなくシグナル番号を渡すもんだと勘違いしており
$ cat testExit.bash #! /bin/bash COUNT=0 function catchHup () { printf HUP } trap "printf '\n\r`basename $0` is closing.'" EXIT trap catchHup HUP read exit 1
readのところでpkillで1(HUP)をおくると以下の様にHUPをつかんでくれるけれど
~$ ./testExit.bash HUP
exit 1 で終了させると、pkillで値を渡した時とは違い、普通に閉じるだけ。
$ ./testExit.bash testExit.bash is closing.
知っていれば当然なのですが、ここで渡している数字は終了ステータスであってシグナル番号じゃありません。
というわけでtrapでつかむ事はできないので、上記の処理は意図通り動かないってわけです。
そもそも終了ステータスであれば0が成功、それ以外は失敗という扱いなので上の例は二重の意味で意図が間違っていたというオチ……ちゃんと勉強しましょうという話ですね、ええ
参考もと
- man exit