【问题标题】:Redirect bash output to file within the bash script将 bash 输出重定向到 bash 脚本中的文件
【发布时间】: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


【解决方案1】:

改变这个:

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

到这里:

python myscript.py "$f" &> ../log-"$f".txt

我没有检查它,但它应该可以工作,除非你必须指定绝对路径, 但这只是猜测。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多