質問

定義済みのデータセットを処理し、ファイルに出力するスクリプトを作成しています。 1つのデータム(アクセスしたすべてのセットで常に「通常」である)が異なる場合、この値が処理されていないことを示す警告を表示したい(データにどのように影響するかわからないため) 。この警告をstderrまたはstdoutに出力する必要がありますか?

役に立ちましたか?

解決

後でスクリプトを処理できるようにこのスクリプトの出力(つまり、stdoutのみ)を保存した場合、その警告は出力の解析方法に干渉しますか?さらに、出力が別のプロセスにパイプされると、端末に警告が表示されるため、ユーザーはすぐにそれを確認できます。

これらの理由により、一般に、警告をstderrに出力します。

他のヒント

警告はstderrに送信されます。

他の人が提示したポイント(ダウンストリームプロセスの解析エラーを引き起こし、コンソールでユーザーからエラーを隠す)に加えて、柔軟性の問題があります。

ユーザーが、stderrからの警告をstdoutを解析しているダウンストリームプロセスに送りたくない場合、特別なことをする必要はありません。

your_script | downstream_process

stderrからの警告をstdoutおよびstderrを解析するダウンストリームプロセスに送りたい場合、2>& 1を使用してstderrをstdoutにリダイレクトできます。

your_script 2>&1 | downstream_process

警告と通常のデータの両方をstdoutに出力する場合、ユーザーはすべてを解析せずに警告をデータから分離する良い方法がありません。 したがって、警告をstderrに送信すると、スクリプトの柔軟性も向上します。

実際の質問は、誰かがスクリプトの出力をファイルにリダイレクトする場合、ファイルに警告を表示するか、ユーザーに送信するかです

警告の結果としてユーザーが何らかのアクションを実行することを期待している場合は、STDERRに移動する必要があります。警告によってダウンストリームスクリプトがトリップする可能性がある場合は、STDERRに移動する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top