9

这条线是在 Bash 中打印错误消息的最佳方式吗?

echo 'Error: banana' >&2

我需要更新数十个使用所有不同方式记录错误的 Bash 脚本,我不妨选择“正确”的方式来执行此操作,并在执行此操作时遵守标准……

4

2 回答 2

13

在我的 bash 脚本开始时,我通常会定义一些函数,例如:

error() {
  echo "$@" 1>&2
}

fail() {
  error "$@"
  exit 1
}

这对于输出致命和普通错误非常方便。您可以将此代码段移动到一个单独的文件中,并将source其从您的所有 bash 脚本中移出,例如:

. /usr/local/lib/snippets/error_handling.sh

因此,当您决定需要一种更好的方法来处理错误消息(例如,将严重错误发送到 syslog)时,您可以一次性更改所有脚本的行为。

于 2012-10-03T08:20:12.650 回答
9

在linux上,我更愿意说

echo "Some error message" >> /dev/stderr

当然,这将有效地做同样的事情,因为/dev/stderr符号链接到/proc/$PID/fd/2

于 2012-10-03T00:51:38.140 回答