当条件命令使用 || 运行时,是否可以从上一个命令中获取失败的错误消息

tro*_*nda 6 shell bash error-handling

我有一个辅助功能:

function error_exit
{
    /opt/aws/bin/cfn-signal ...
    exit 1
}
Run Code Online (Sandbox Code Playgroud)

此辅助函数用于发出错误信号。下面是一个使用示例:

/opt/aws/bin/cfn-init -s .. || error_exit 'Failed to run cfn-init'
Run Code Online (Sandbox Code Playgroud)

cfn-init命令采用了许多与问题无关的参数。当命令向错误输出返回非空值和可能的错误消息时,我想获取错误消息并将其error_exit作为参数包含在方法中。这可能吗?如果没有,您将如何在 bash 中实现一个帮助方法来获取源错误消息?

Arc*_*ege 7

您可以将错误输出重定向到一个文件,然后检索该输出:

trap "rm -f /tmp/cfn-error.txt" 0 1 2 3 15
/opt/aws/bin/cfn-init -s ... 2>/tmp/cfn-error.txt ||
    error_exit $(</tmp/cfn-error.txt)
Run Code Online (Sandbox Code Playgroud)

你应该总是清理你的烂摊子,所以不要忘记删除你创建的任何临时文件。