最后打印了一些重定向的输出

最后打印了一些重定向的输出

运行一些运行 Python 脚本的 shell 脚本,当重定向到 tee 或文件时,我会对 stdout 行进行重新排序。

例如,如果我运行 shell 脚本并将输出发送到我的 stdout,我的输出如下所示:

Line1: Starting X 
Line2: Output of X 
Line3: Starting Y 
Line4: Output of Y

但是如果我运行相同的脚本并将输出重定向到文件,或者使用 tee,则底层 Python 脚本的打印语句将在执行结束时打印。

Line1: Output of X
Line2: Output of Y
Line3: Starting X
Line4: Starting Y

我能做些什么来避免这种情况?

答案1

可能是 Python 脚本同时写入 stdout 和 stderr,而您只重定向其中一个(重定向到文件或通过tee)。

要检查输出到哪里:

./myscript 2>/dev/null    # shows only stdout
./myscript >/dev/null     # shows only stderr

要重定向两者:

./myscript >myfile 2>&1   # both to myfile
./myscript |& tee ...     # both through tee

相关内容