【发布时间】:2020-03-22 09:39:45
【问题描述】:
我正在尝试处理一个文件夹中的多个视频,并通过将它们的输出重定向到一个文本文件来产生结果。当我在 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
【问题讨论】:
-
去掉 > 之前的 &。默认情况下,它应该将标准输出发送到文件。另一种选择是
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替换为>。我的建议是两者都试一下,看看有什么不同:)
标签: linux bash shell ubuntu scripting