При автоматизации задачи целесообразно сначала проверить ее вручную. Было бы полезно, однако, если бы любые данные, поступающие в stderr, были сразу же распознаваемы как таковые и отличались от данных, поступающих в stdout, и иметь все выходные данные вместе, чтобы было очевидно, какова последовательность событий.
Последнее, что было бы неплохо, - при выходе из программы печатать код возврата.
Все эти вещи помогут в автоматизации. Да, я могу повторить код возврата после завершения программы, и да, я могу перенаправить stdout и stderr; что бы мне действительно понравилось, это какая-то оболочка, скрипт или простой в использовании редиректор, который показывает stdout черным цветом, показывает stderr, чередующийся с ним красным, и печатает код выхода в конце.
Есть ли такой зверь? [Если это имеет значение, я использую Bash 3.2 в Mac OS X].
Обновление: Извините, прошли месяцы с тех пор, как я смотрел на это. Я придумал простой тестовый скрипт:
#!/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, но все же было бы неплохо иметь что-то, что работало бы немного лучше.