我可以捕获陷阱消息和 $LINE_NO 吗?

我可以捕获陷阱消息和 $LINE_NO 吗?

我有一个类似的代码:

trap 'error ${LINENO} ${BASH_COMMAND}' ERR

我想同时捕获错误消息。是否有用于打印错误消息的内置变量?

答案1

shell 脚本中的错误处理相当简单。检测任何类型问题的唯一标准化方法是返回码命令的(如果出现错误则非零)和打印到的内容标准误(文件描述符2)。默认情况下,标准错误将打印到您的终端。如果您需要将其传递给error,例如因为错误消息被其他输出淹没,您可以将当前 shell 替换为将标准错误保存到临时文件

trap 'rm -f "${stderr_output_file}"' EXIT
stderr_output_file="$(mktemp)"
exec 2>"${stderr_output_file}"
[the rest of your program]

相关内容