Linux

程序可以輸出到 STDERR 並且仍然返回零退出狀態嗎?

  • April 23, 2022

我正在重構一些打算從命令行執行的 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

引用自:https://unix.stackexchange.com/questions/594666