我正在制作一个处理预定义数据集的脚本,输出到一个文件中。当一个数据(在每一组中我都可以访问的数据总是“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和stderr信息?
- 4. stdout/stderr元组或字符串输出
- 5. Ruby从$ stdout和$ stderr同步输出
- 6. 为什么当我写入stderr时,我在stdout上看到了STDERR输出?
- 7. 我重定向了stdout和stderr,为什么我仍然得到一些输出?
- 8. Linux stdout stderr重定向到文件:与终端输出不同
- 9. 既不是STDOUT也不是STDERR的程序输出?
- 10. dup2,stdout和stderr出错
- 11. 我应该将消息记录到stderr或stdout吗?
- 12. FindBugs Dead Store Warning - 我应该重组代码还是忽略警告
- 13. 我应该使用问号类型参数还是抑制rawtypes警告?
- 14. 如何使用stdout和stderr io-redirection从程序中获取理智的错误/警告消息输出?
- 15. 您可以告诉Informix将跟踪信息输出到stdout或stderr吗?
- 16. Bash stderr和stdout重定向失败
- 17. 将stdout和stderr重定向到函数
- 18. 将子进程stderr重定向到stdout
- 19. 实时重定向stdout和stderr
- 20. 撤消全局STDERR - > STDOUT重定向
- 21. 重定向stdout/stderr在C中运行
- 22. Tomcat将'stderr'内容重定向到'stdout'
- 23. Valgrind警告:我应该认真对待
- 24. Scons日志stdout/stderr
- 25. stderr和stdout的ssh?
- 26. 重定向powershell脚本的stdout和stderr时出错
- 27. htmlspecialchars()应该用于输入信息还是输出前?
- 28. 当重定向时,为什么Ruby的STDERR输出会在较早的STDOUT输出之前出现?
- 29. 我应该使用警报还是CountDownTimer,或两者?
- 30. bash命令为> stdout和>标准输出+ stderr的
所以它应该去stderr不管?或者你是否打算将STDERR的两个引用之一作为STDOUT? – 2009-09-16 05:55:11
我的意思是STDERR。他们是两种情况,你几乎必须将它发送到stderr。我能想到的唯一时间就是想让它进入stdout,如果脚本的输出是供人使用的(也许你会把输出发送给某人查看它),并且你可能需要警告输出时不必记得重定向stderr。 – Martin 2009-09-16 06:05:22