bash - 在 shell 脚本中可移植地捕获 ERR

标签 bash shell error-handling dash-shell

我正在尝试编写一个 shell 脚本,该脚本在命令失败时中止并显示有问题的行号。

set -e
trap 'echo "$0 FAILED at line ${LINENO}"' ERR

事实证明,陷阱行不适用于 Ubuntu 的默认 shell 脚本解释器 dash。如果我将 shebang 行更改为 #!/bin/bash 这有效,但不适用于 #!/bin/sh。有没有办法在不依赖 bash 的情况下完成这项工作?

顺便说一句,我从破折号得到的错误是这样的:

trap: ERR: bad trap

最佳答案

您可以像这样在退出时捕获并测试退出代码:

set -e
trap '[ $? -eq 0 ] && exit 0 || echo "$0 FAILED at line ${LINENO}"' EXIT

关于bash - 在 shell 脚本中可移植地捕获 ERR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31313305/

相关文章:

linux - 如何在 bash 中获取映射到 docker 容器的特定主机名的所有 IP 地址

linux - Bash 脚本在管道传输到 while 循环之前对输入文件进行排序

linux - 从linux中的某个目录启动shell

Bash - $PATH 和 ${PATH}

ios - 设置 : Cannot Perform Set On Containers

exception - PowerShell不断抛出异常

bash - 转义 "#"标志

c++ - 错误处理中如何避免goto

cakephp - Cakephp所有错误的自定义错误页面

bash - 如何将文本的第一行和最后一行作为单个命令输出到终端