我正在制作一个处理预定义数据集的脚本,输出到一个文件中。当一个数据(在每一组中我都可以访问的数据总是“Regular”)不同时,我想弹出一个警告,说明这个值是未处理的(因为我不知道它是如何影响数据的)。我应该将此警告输出到标准错误还是标准输出?我应该向STDERR还是STDOUT输出警告?
21
A
回答
27
如果我保存了此脚本的输出(即仅用于stdout)以便稍后处理它,那么该警告是否会干扰输出的解析?而且,如果将输出传送到另一个进程,警告应该显示在终端上,以便用户立即看到它。
由于这些原因,一般情况下,您会向stderr输出警告。
1
真正的问题是:如果有人将您的脚本的输出重定向到一个文件,您想要将警告置于文件中还是导向给用户?
如果您希望用户因警告而采取某些操作,则应该转到STDERR。如果某些下游脚本可能被警告绊倒,它应该转到STDERR。
4
警告应该发送到stderr。
除了其他人提出的观点(导致下游流程的解析错误和隐藏控制台用户的错误)之外,还存在一个灵活性问题。
如果用户不希望来自stderr的警告转到解析stdout的下游进程,他们不必做任何特殊的事情。
your_script | downstream_process
如果用户希望从标准错误警告去到下游的过程,将解析输出和错误,用户可以使用2> & 1到stderr重定向到标准输出。
your_script 2>&1 | downstream_process
如果输出警告和任何正常的数据到标准输出,用户分离数据的警告没有解析的一切没有什么好办法。 因此,将警告发送到stderr会使脚本具有更大的灵活性。
相关问题
- 1. 重定向stdout和stderr的输出?
- 2. 我应该向stderr打印警告信息的级别是多少?
- 3. 将STDOUT的PHP通知和警告重定向到STDERR
- 4. 输出重定向是否按顺序写stdout和stderr信息?
- 5. 将输出stdout和stderr发送到Logstash
- 6. stdout/stderr元组或字符串输出
- 7. Python Popen stdout输出进入stderr
- 8. Cronjob - 如何输出stdout,并忽略stderr
- 9. Ruby从$ stdout和$ stderr同步输出
- 10. 为什么当我写入stderr时,我在stdout上看到了STDERR输出?
- 11. 如何将stdout和stderr重定向到文件AND仍只输出stderr?
- 12. 我重定向了stdout和stderr,为什么我仍然得到一些输出?
- 13. 重定向PostgreSQL Qt驱动程序stdout/stderr输出
- 14. PERL无法将stdout和stderr重定向到输出文件
- 15. Linux stdout stderr重定向到文件:与终端输出不同
- 16. 既不是STDOUT也不是STDERR的程序输出?
- 17. 我应该将消息记录到stderr或stdout吗?
- 18. dup2,stdout和stderr出错
- 19. 为什么wget输出到stderr而不是stdout?
- 20. stdin,stdout,stderr在Lua中是缓冲还是非缓冲?
- 21. LLVM stdin/stdout/stderr
- 22. tomcat logging stdout stderr
- 23. 输出不是STDOUT
- 24. 重定向cmdlet警告/错误输出?
- 25. FindBugs Dead Store Warning - 我应该重组代码还是忽略警告
- 26. 我应该使用问号类型参数还是抑制rawtypes警告?
- 27. 如何在Java中将子进程stdout/stderr重定向到主进程stdout/stderr?
- 28. 如何使用stdout和stderr io-redirection从程序中获取理智的错误/警告消息输出?
- 29. 您可以告诉Informix将跟踪信息输出到stdout或stderr吗?
- 30. Tomcat将'stderr'内容重定向到'stdout'
所以它应该去stderr不管?或者你是否打算将STDERR的两个引用之一作为STDOUT? – 2009-09-16 05:55:11
我的意思是STDERR。他们是两种情况,你几乎必须将它发送到stderr。我能想到的唯一时间就是想让它进入stdout,如果脚本的输出是供人使用的(也许你会把输出发送给某人查看它),并且你可能需要警告输出时不必记得重定向stderr。 – Martin 2009-09-16 06:05:22