在bash脚本中重定向输出

时间:2014-09-23 16:31:40

标签: python linux bash redirect

我有一个bash脚本,它运行的内容如下:

python myscript.py --input=/path/file --someOption=value > /path/file

如果我在没有重定向的情况下运行它,一切正常。如果我使用重定向运行它,文件将被截断。我怀疑python正在执行整行,包括重定向,实际上重定向必须由bash执行。

我试过了:

exec "python myscript.py --input=/path/file --someOption=value"但我发现命令未找到错误。

如何让python只执行python部分,重定向由bash执行?

2 个答案:

答案 0 :(得分:6)

您无法同时读取和写入同一文件。

将输出重定向到临时位置,然后覆盖输入:

if python myscript.py --input=/path/file --someOption=value > /path/file.tmp
then
  mv /path/file.tmp /path/file
fi

答案 1 :(得分:1)

问题是您使用相同的文件作为输入和输出。 Shell首先打开重定向文件,它变为空。然后你的python脚本读取空文件。

可以使用 tee 轻松解决。

python myscript.py --input=/path/file --someOption=value | tee /path/otherfile