Linux 将bash输出重定向到bash脚本中的文件

Linux 将bash输出重定向到bash脚本中的文件,linux,bash,shell,ubuntu,scripting,Linux,Bash,Shell,Ubuntu,Scripting,我正在尝试处理文件夹中的多个视频,并通过将其输出重定向到文本文件来生成结果。当我在bash脚本中执行此操作时,它不起作用,也不会重定向,而是显示在屏幕上。我应该换什么?如何修复它 for f in *.mp4 do echo "Processing $f file..." # take action on each file. $f store current file name python myscript.py $f &> ../log-$f.txt done

我正在尝试处理文件夹中的多个视频,并通过将其输出重定向到文本文件来生成结果。当我在bash脚本中执行此操作时,它不起作用,也不会重定向,而是显示在屏幕上。我应该换什么?如何修复它

for f in *.mp4
do
  echo "Processing $f file..."
  # take action on each file. $f store current file name
  python myscript.py $f &> ../log-$f.txt 
done
更改此项:

python myscript.py $f &> ../log-$f.txt
为此:

python myscript.py "$f" &> ../log-"$f".txt
我没有检查它,但它应该可以工作,除非您必须指定绝对路径,
但这只是猜测。

删除&before>。默认情况下,它应该将标准输出发送到一个文件。另一个选项是
tee
python myscript.py$f | tee../log-$f.txt
但我还需要输出stderr。使用2>&1,它将2(stderr)重定向到1(stdout),最后tee会将所有内容发送到该文件。类似于
python myscript.py“$f”2>&1 | tee../log-“$f”.txt
。如果愿意,您可以将
|tee
替换为
。我的建议是两种方法都试一下,看看有什么不同:)