【发布时间】:2012-01-17 20:47:05
【问题描述】:
在 bash 中,这会以预期的顺序给出输出:
ruby -e "puts 'one'; raise 'two'"
one
-e:1:in `<main>': two (RuntimeError)
但是如果我将 STDERR 重定向到 STDOUT,我会在输出之前收到错误,这是我不想要的:
ruby -e "puts 'one'; raise 'two'" 2>&1 | cat
-e:1:in `<main>': two (RuntimeError)
one
我想将输出重定向到一个文本文件(它的行为方式与上面的cat 相同)并获取输出和异常,但与在终端中查看输出时的顺序相同。这可以实现吗?
【问题讨论】:
-
STDEER 总是打印到流中,而 STDOUT 通常被缓冲打印。