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