將錯誤訊息列印到 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"