我应该输出警告STDERR或STDOUT?(Should I output warnings to

2019-07-18 04:27发布

我做的是处理一组预定义的数据,输出到文件的脚本。 我想弹出一个警告,当一个数据(它总是在每一个组,我已经有进入“常规”)是不同的,说明这个值是未处理的(因为我不知道它是如何影响的数据)。 我应该输出这个警告标准错误或标准输出?

Answer 1:

如果我救了这个脚本的输出(即标准输出只),这样我可以以后再处理它,将这一警告与输出是如何解析的干扰? 此外,如果输出用管道输送到另一个进程,警告应显示在终端上,所以用户可以立即看到它。

出于这些原因,在一般情况下,输出警告到stderr。



Answer 2:

警告应该去到stderr。

除了由他人(导致解析错误地为下游进程和隐藏从控制台的用户错误)颁发的点,有一定的灵活性问题。

如果用户不希望从标准错误警告去那个被解析标准输出的下游过程中,他们没有做什么特别的事情。

your_script | downstream_process

如果用户希望从标准错误警告去到下游的过程,将解析输出和错误,用户可以使用2>&1把stderr重定向到标准输出。

your_script 2>&1 | downstream_process

如果输出警告和任何正常的数据到标准输出,用户分离数据的警告没有解析的一切没有什么好办法。 所以发送警告到标准错误给你的脚本更多的灵活性为好。



Answer 3:

真正的问题是:如果有人到你的脚本的输出重定向到一个文件,你想放置在文件中警告,或直接给用户?

如果你希望用户采取一些行动,警告的结果,就应该到STDERR。 如果某些下游脚本可能会受到警告被绊倒了,就应该去STDERR。



文章来源: Should I output warnings to STDERR or STDOUT?