Dan*_*age 1 error-handling bash perl
在Perl中,$SIG{__DIE__}如果程序退出并出现错误,您可以编写一个处理程序来执行代码.bash是否提供类似的功能?
这是我正在尝试做的事情:我有一个bash脚本,它创建一个新目录并调用几个命令,然后用数据文件填充新目录.我正在使用,set -e以便如果任何命令失败,脚本将立即终止.如果失败,我希望脚本删除它创建的目录.如果脚本成功完成,那么新输出当然应该保留.
bash是否提供DIE信号处理程序,或任何类似的功能,使我能够这样做?
自从您使用以来set -e,您可以安装一个ERR处理程序:
trap errfunc ERR
Run Code Online (Sandbox Code Playgroud)
errfunc如果任何命令以非零退出代码退出(并且因为您正在使用set -e,这将终止脚本)将被调用.
您也可以通过这种方式传递参数:
trap 'errfunc $LINENO' ERR
Run Code Online (Sandbox Code Playgroud)
由于陷阱命令eval在错误点处为'd',因此该陷阱将失败命令的行号传递给errfunc.