我有一個腳本寫出臨時文件來幫助它的執行。在我的腳本結尾,我只需撥打rm filename
來清理我創建的臨時文件。問題是腳本由於錯誤或被中斷而結束。在這些情況下,rm
聲明永遠不會到達,因此文件永遠不會被清理。有沒有一種方法可以指定一些命令在退出時運行,而不管它是否成功退出?有沒有辦法在退出時執行命令(無論腳本如何退出)?
5
A
回答
0
對於中斷,您可以使用onintr
指定一個處理程序來刪除文件,然後退出。
2
是;你可以這樣寫:
trap 'rm filename' EXIT
(見的trap
的描述§4.1 "Bourne Shell Builtins" of the Bash Reference Manual)
當然有些情況下該命令將不會運行—如極端情況下,如果有人突然拔掉機器,甚至只是將SIGKILL
發送到運行腳本—的Bash實例,但是這可以獲得儘可能可靠的結果。
2
是的,你可以使用trap
像這樣:
trap "rm -f filename" EXIT
腳本可能看起來像這樣:
#/bin/bash
trap "rm -f filename" EXIT # remove file when script exits
touch filename # create file
some-invalid-command # trigger an error
0
對於中斷:設置腳本像SIGHUP和陷阱信號SIGTERM。除了SIGKILL(無法捕獲)之外,這將幫助你完成所有任務。谷歌「bash腳本陷阱信號」
對於nonsuccessful退出:結構你的代碼,這樣你打電話rm文件名的函數(或者只是把語句)退出腳本
相關問題
- 1. 有沒有辦法退出Greasemonkey腳本?
- 2. 退出沒有在腳本中執行
- 3. os.fork退出腳本如果孩子無法運行命令
- 4. 有沒有辦法回滾並退出錯誤的psql腳本?
- 5. 「腳本」命令退出bash腳本
- 6. 在Python中退出腳本命令
- 7. 如何在命令行執行mercurial commit時退出VIM?
- 8. 執行同時執行的命令並在完成時退出
- 9. 如何進入root shell,執行命令,退出並繼續執行腳本?
- 10. 如何在腳本退出時不停止運行bash腳本中的命令?
- 11. 如何在Bash腳本退出之前運行命令?
- 12. shell腳本:執行命令的退出狀態不正確
- 13. 如何在退出Java程序時執行一組命令?
- 14. 如何從命令行運行matlab腳本後退出?
- 15. 退出(退出)執行
- 16. shell腳本ssh命令退出狀態
- 17. 如何在命令失敗時退出?
- 18. 退出Python Webdriver腳本沒有錯誤
- 19. 執行命令,然後退出
- 20. 如何在ssh會話退出時執行腳本?
- 21. 如何讓bash在每次退出時執行腳本?
- 22. 執行「退出」時無效的命令名「exit」
- 23. 從python命令行退出
- 24. 退出命令行Python中
- 25. 如何退出Zend命令行提示
- 26. VB.Net代碼退出例程,如果沒有執行'Else'命令,如果語句
- 27. 無法捕獲ctrl-c退出函數退出bash腳本
- 28. Java命令行退出命令?
- 29. SSIS執行進程任務:有沒有辦法獲得退出代碼?
- 30. 如何在調用Perl腳本後退出命令shell?
看看這裏之前 - 可能是什麼你正在尋找 http://stackoverflow.com/questions/64786/error-handling-in-bash – repoman 2013-03-06 23:14:14