perl - Bash的“DIE”信号处理程序

标签 perl bash error-handling

在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/

相关文章:

Bash:为什么 [[ zero -eq 0 ]] 的计算结果为真?

spring-mvc - Thymeleaf错误消息优化

VBA嵌套错误处理

Perl:引用散列以传递给另一个例程

perl - 将 Vanilla Perl CGI 中的请求 header 克隆到 LWP UserAgent

bash - 使用 bash 打开和关闭进程

bash - ( ... ) 和 { ... } 如何与 bash 中的管道创建子 shell 进行交互?

image - RMSE Landsat8 AVHRR

perl - 如何用特定列中的字母替换和替换数字

mysql - 使用 Perl 从 CSV 到 MySQL 数据库