这是我的脚本:
#!/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
,它会"got USR1"
按预期打印。然后,当我发送INT
信号(使用 ctrl+c 或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