在Perl中,如果程序因错误退出,则可以编写$SIG{__DIE__}
处理程序来执行代码。 bash是否提供类似的功能?
这是我要尝试的操作:我有一个bash脚本,该脚本创建一个新目录并调用几个命令,这些命令又将数据文件填充到新目录中。我正在使用set -e
,以便如果任何命令失败,脚本将立即终止。如果发生故障,我希望脚本删除其创建的目录。如果脚本成功完成,那么当然应该保留新的输出。
bash是否提供DIE信号处理程序,或使我能够执行此操作的任何类似功能?
最佳答案
由于您使用的是set -e
,因此可以安装ERR
处理程序:
trap errfunc ERR
如果任何命令以非零退出代码退出(并且由于您使用的是
errfunc
,这将终止脚本),则将调用set -e
。您也可以通过这种方式传递参数:
trap 'errfunc $LINENO' ERR
由于陷阱命令在错误发生时是
eval
,因此该陷阱会将失败命令的行号传递给errfunc
。
关于perl - Bash的“DIE”信号处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14781345/