运行一些运行 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