这行是在Bash中打印错误消息的最佳方法吗?
echo 'Error: banana' >&2
Run Code Online (Sandbox Code Playgroud)
我需要更新数十种使用所有不同方式记录错误的Bash脚本,我不妨选择“正确”的方法来做到这一点,并遵循我所遵循的标准...
在我的bash脚本开始时,我通常定义一些函数,例如:
error() {
echo "$@" 1>&2
}
fail() {
error "$@"
exit 1
}
Run Code Online (Sandbox Code Playgroud)
这对于输出致命的和普通的错误非常方便。您可以将该代码段移到一个单独的文件中,并将source其从所有bash脚本中移至一个文件中,如下所示:
. /usr/local/lib/snippets/error_handling.sh
Run Code Online (Sandbox Code Playgroud)
因此,只要您决定需要一种更好的方法来处理错误消息(例如,将严重错误发送到syslog),就可以通过一次性更改所有脚本的行为来实现。
在linux上,我更愿意说
echo "Some error message" >> /dev/stderr
Run Code Online (Sandbox Code Playgroud)
当然,由于/dev/stderr符号链接到/proc/$PID/fd/2