将错误消息打印到 stderr
错误消息通常包含在脚本中,用于调试目的或提供丰富的用户体验。只需编写如下错误信息:
cmd || echo 'cmd failed'
可能适用于简单的情况,但这不是通常的方式。在此示例中,错误消息将通过混合 stdout
中的错误和成功输出来污染脚本的实际输出。
简而言之,错误信息应该发送到 stderr
而不是 stdout
。这很简单:
cmd || echo 'cmd failed' >/dev/stderr
另一个例子:
if cmd; then
echo 'success'
else
echo 'cmd failed' >/dev/stderr
fi
在上面的示例中,成功消息将打印在 stdout
上,而错误消息将打印在 stderr
上。
打印错误消息的更好方法是定义一个函数:
err(){
echo "E: $*" >>/dev/stderr
}
现在,当你必须打印错误时:
err "My error message"