我有一个类似的代码:
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]