script1.sh:
#!/bin/bash
./script2.sh
echo after-script
script2.sh:
#!/bin/bash
function handler {
exit 130
}
trap handler SIGINT
while true; do true; done
端末から script1.sh を起動し、Ctrl+Cを使用して SIGINT をそのプロセス グループに送信すると、シグナルが script2.sh によってトラップされ、script2.sh が終了すると、script1.sh が「after-script」を出力します。ただし、script2.sh を呼び出す行の直後に script1.sh が終了すると予想していました。この例では、なぜこれが当てはまらないのでしょうか?
追加の備考 (編集):
script1.sh と script2.sh は同じプロセス グループにあるため、コマンド ラインで+を押すと、両方のスクリプトにSIGINT が送信されます。そのため、script2.sh が終了したときに script1.sh が続行するとは思わないのです。CtrlC
script2.sh の「トラップ ハンドラ SIGINT」行をコメント アウトすると、script2.sh が存在した直後に script1.sh が終了します。script2.sh は同じ終了コード (130) を生成するため、なぜ動作が異なるのかを知りたいです。