2013/11/16

bash で二重に trap

Q. 最初のスクリプトでtrapを呼び、そこから呼び出したスクリプト内でもtrapを呼ぶとどうなるのか?

A. 両方が呼び出される。以下、実験結果。

[test.sh]
#!/bin/bash
trap "echo xxx" 2
./sub.sh
sleep 5

[sub.sh]
#!/bin/bash
trap "echo yyy" 2
sleep 5

test.shを実行して、5秒以内にCtrl+Cを押すと、端末に
^Cyyy
xxx
が表示される。

5秒から10秒の間にCtrl+Cを押すと、端末に
^Cxxx
が表示される。



ここにtrapの解説がある。
http://shellscript.sunone.me/signal_and_trap.html