1
所以,我认定我的bash脚本的行为,我觉得很奇怪。shell脚本,子shell,子脚本,管道 - (?)WEIRD CTRL + C信号传播
下面是测试脚本:
echo "start of script"
(
echo "start of subshell"
cat > /tmp/$$ << EOF
trap 'exit 99' SIGINT
echo "sleep 10, hit ctrl+c now"
sleep 10
EOF
chmod +x /tmp/$$
/tmp/$$
echo "end of subshell"
#)
) | tee -a /tmp/$$.log
echo "end of script"
所以,你可以看到,我用它来轻松地创建一个子shell管道输出进行日志记录括号。
这里面子shell,我跑映入CTRL + C信号和简单地退出脚本的脚本。
因此,根据如果我管子外壳的输出与否,下标期间击打CTRL + C时的行为(睡眠10)不同。
随着|三通-a /tmp/$$.log,输出显示:
[/tmp] ./test.sh
start of script
start of subshell
sleep 10, hit ctrl+c now
end of script
没有管和三通,输出显示:
[/tmp] ./test.sh
start of script
start of subshell
sleep 10, hit ctrl+c now
**end of subshell**
end of script
有人可以请解释这种现象?有没有办法确保下标的末尾不会像管和T恤一样跳过?
谢谢