Linux
程序可以輸出到 STDERR 並且仍然返回零退出狀態嗎?
我正在重構一些打算從命令行執行的 Python 腳本。腳本使用日誌記錄,這使得一些消息被寫入 STDERR(除其他外)。我想知道 Linux 中的程序是否適合輸出到 STDERR,但仍返回零(成功)退出狀態。我認為只有在退出狀態不為零時才應諮詢 STDERR。
PS 基本上我需要擷取腳本的輸出,並將其與退出狀態一起發送到另一個服務進行處理。我希望數據保持一致。
是的,程序可以輸出到標準錯誤並且仍然返回零退出狀態。您會發現許多 POSIX 實用程序規範聲明“標準錯誤僅用於診斷消息”。
輸出到 STDERR 並返回 0 的程序的一個明顯範例是
crontab
. 嘗試EDITOR=nano crontab -e 2> stderr.out; echo $?
不要修改 cron 文件並退出編輯器。
0
將被回顯,但會有一些消息stderr.out
,例如(在我的情況下)no crontab for user - using an empty one No modification made