为什么这个bash脚本要求我按Enter继续?

时间:2009-03-14 22:23:24

标签: linux bash shell command-line scripting

几分钟前,我被一位名叫Juliano的用户亲切地帮助了,脚本工作正常,但是当我按下回车键时,为什么它继续工作让我感到困惑,如果我不这样做只是坐在那里直到我必须保持按进入。我以为这是for循环的工作?

    #!/bin/bash
    TIMEFORMAT=%6R
    for file in /home/test/videos/* ; do
     #for loop 2
     for (( i = 0; i < 10; i++ )); do
      #for loop 3
      for ext in avi mpg wmv mov; do
          base="${file##*/}"
          elapsed=$({ time ffmpeg -i "$file" -ar 44100 "${file%/*}/done/${base%.*}.$ext" &>/dev/null; } 2>&1)
          echo "$file $i $ext took $elapsed seconds"
        done
      done
    done

我也可以换掉循环2和3吗?

全部谢谢

更新

我怎样才能在for循环中使用变量“i”,以便它在文件末尾汇编。这是对的:

$ {文件%/ } /完成/ $ {基地%。}的 $ I 即可。$分机

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

我怀疑ffmpeg程序正在等待进程结束时的按键。您可以向其发送按键,例如:

echo -e \\n | time ffmpeg ...

可能会将新行“回显”到ffmpeg程序的标准输入中。

是的,你可以交换循环#2和#3。

答案 1 :(得分:3)

我已经回答了另一个问题。 ffmpeg要求你覆盖输出文件。给出唯一的名称(在文件名中使用$ i)并将-y传递给ffmpeg可以解决问题。