自动执行任务时,明智的做法是先手动对其进行测试。但是,如果可以立即识别出发往stderr的任何数据,并且将其与发往stdout的数据区分开来,并且将所有输出放在一起,则这将是有帮助的,这样就可以清楚地知道事件的顺序是什么。
最后一个不错的选择是,如果在程序退出时打印了返回代码。
所有这些事情将有助于自动化。是的,我可以在程序完成时回显返回代码,是的,我可以重定向stdout和stderr;我真正想要的东西是一些shell,脚本或易于使用的重定向程序,该程序以黑色显示stdout,以红色显示stderr与它交错,并在最后打印退出代码。
有野兽吗?[如果有关系,我正在Mac OS X上使用Bash 3.2]。
更新:对不起,距离我看过已有几个月了。我提出了一个简单的测试脚本:
#!/usr/bin/env python
import sys
print "this is stdout"
print >> sys.stderr, "this is stderr"
print "this is stdout again"
在我的测试中(可能是由于缓冲的方式),rse和hilite会显示stdout中的所有内容,然后显示stderr中的所有内容。fifo方法使顺序正确,但似乎使stderr线后面的所有内容着色。ind抱怨我的stdin和stderr行,然后将stderr的输出放在最后。
这些解决方案中的大多数都是可行的,因为仅将最后的输出发送到stderr是不典型的,但是,仍然有一些更好的解决方案还是很不错的。