これは私のスクリプトです。
#!/bin/bash
# this is repeat-signal.sh
trap "echo got USR1; wait" USR1
trap "echo got INT" INT
(
kill -s USR1 $$
sleep 100
) &
wait
入力で実行すると、期待どおりに印刷されます./repeat-signal.sh
。次に(ctrl + cを使用するか、他の端末から)信号を送信"got USR1"
すると、2行が印刷されます。INT
kill
got INT
got USR1
私はそれが印刷されるだけだと思いましたgot INT
。
got USR1
信号を送信するINT
ときにこの行が印刷されるのはなぜですか?INT
信号が何らかの形でUSR1
信号を繰り返すようです。
明確にするために編集されました:
最後に、私の端末は次のようになります。
bash-5.0$ ./repeat-signal.sh
got USR1
^Cgot INT
got USR1
編集2:
実際、これはbash 3.2では発生しているようですが、bash 5.0では発生しません。