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恤一樣跳過?
謝謝