我有一个脚本写出临时文件来帮助它的执行。在我的脚本结尾,我只需拨打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