プログラムはSTDERRに出力され、まだゼロ終了ステータスを返すことはできますか?

プログラムはSTDERRに出力され、まだゼロ終了ステータスを返すことはできますか?

私はコマンドラインで実行するように設計されたいくつかのPythonスクリプトをリファクタリングしています。これらのスクリプトはロギングを使用するため、一部のメッセージがSTDERRに書き込まれます。 LinuxのプログラムはSTDERRに出力しますが、まだ0(成功)終了ステータスを返すのが適切かどうか疑問に思います。終了状態がゼロでない場合にのみSTDERRを参照する必要があると思います。

PS デフォルトでは、スクリプトの出力をキャプチャし、終了状態とともに処理のために別のサービスに送信する必要があります。データが一貫していることを願っています。

ベストアンサー1

はい、プログラムは標準エラーとして出力し、まだゼロ終了ステータスを返すことができます。多くの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

おすすめ記事