我有一個bash shell腳本。它寫出到一個文本文件。它的大部分工作發現,如果我在命令級別用control-c停止腳本。有時,一直寫到如bash shell:control-c會導致shell寫一個空文件嗎?
echo "hello world" >myfile.txt
文件最終會是空的。所以有可能,當我點擊control-c來停止shell腳本運行時,它會在它打開文件寫入的實例中捕獲它,並且在它放入任何東西之前,它沒有得到機會並保留它空?
如果是這樣的話。我可以在bash shell腳本中執行什麼操作,以便它在寫入文件之後,在它有機會再次寫入文件之前正常退出,因爲它在while循環中執行此操作。謝謝!
感謝您的有用答覆。因此,上述陷阱控制c,並強迫它關閉它打開的文件?它是「退出」,因爲它默認退出0? – Edward 2013-05-13 05:18:34
退出腳本的責任從shell移到腳本本身(使用'if'語句)。所以如果你正在用'do stuff'寫一個文件,它會繼續這樣做;在循環的下一次運行中,腳本會檢查^ C是否被捕獲,並且它很好地退出。 – robertklep 2013-05-13 05:21:56
雖然我只注意到shell仍然將SIGINT傳遞給它的子進程。所以它可能不工作畢竟:( – robertklep 2013-05-13 05:25:12