次のbashスクリプトがあります。
#!/bin/bash
for i in {0..8}
do
trap "echo received $i" $i
done
trap "echo 'receiving the SIGINT'; kill -9 $$" INT
for i in {10..64}
do
trap "echo receiving the $i" $i
done
sleep 1h
それを実行し、他の端末からSIGINTを送信した場合、何も実行されません。kill -2 pid
ここで、pidは実行中のスクリプトのpidを使用しています。
スクリプトが実行されているターミナルでCTRL+ C(SIGINT)を押すと、スクリプトはそれ自体を強制終了し、メッセージを書き込みます。どうして、別の端末から信号を送るのと同じではないのですか?