有没有办法在退出时执行命令(无论脚本如何退出)?

imn*_*red 5 bash exit

我有一个脚本写出临时文件,以帮助执行.在我的脚本结束时,我只是打电话rm filename来清理我创建的临时文件.问题是脚本因错误而中断或被中断时.在这些情况下,rm永远不会达到语句,因此永远不会清除文件.有没有办法我可以指定一些命令在退出时运行,无论它是否成功退出?

Mar*_*tin 5

trap是的,你可以像这样使用:

trap "rm -f filename" EXIT
Run Code Online (Sandbox Code Playgroud)

脚本可能如下所示:

#/bin/bash
trap "rm -f filename" EXIT   # remove file when script exits
touch filename               # create file
some-invalid-command         # trigger an error
Run Code Online (Sandbox Code Playgroud)


ale*_*xis 0

对于中断,您可以onintr指定一个处理程序来删除文件,然后退出。