把這個腳本退出
#!/bin/sh
fd()
{
echo Hello world
exit
}
trap fd EXIT INT
for g in {1..5}
do
echo foo
sleep 1
done
我想fd
火一次,無論是從控制-C或腳本是否正常退出。但是,如果您擊中Control-C,它將運行兩次。我怎樣才能解決這個問題?
把這個腳本退出
#!/bin/sh
fd()
{
echo Hello world
exit
}
trap fd EXIT INT
for g in {1..5}
do
echo foo
sleep 1
done
我想fd
火一次,無論是從控制-C或腳本是否正常退出。但是,如果您擊中Control-C,它將運行兩次。我怎樣才能解決這個問題?
做級聯陷阱。 exit 127
將運行EXIT
陷阱和退出代碼設置爲127,這樣你就可以用各種變通方法奮力您的問題幾年後說
#!/bin/sh
fd() {
echo Hello world
# No explicit exit here!
}
trap fd EXIT
trap 'exit 127' INT
我記得我從其他人的腳本學習這一點。之後,我注意到一些教程解釋了這種技術。但它沒有在例如Bash手冊頁恕我直言。 (或不是當我需要它時,也許有些東西在15年內不會改變...... :-)
在重新定義陷阱默認值方面呢?
#!/bin/sh
fd() {
echo Hello world
trap - EXIT
exit 127
}
trap fd INT EXIT
很好,+1 :) – drAlberT