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