linux - 为什么这个 bash 脚本需要我按回车键才能继续?

标签 linux bash shell command-line scripting

几分钟前,我得到了一个名叫 Juliano 的用户的好心帮助,脚本工作正常,但我很困惑为什么当我按下 enter 时它会继续工作,如果我不这样做,它就会一直坐在那里直到我必须保持按回车。我以为那是 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”,以便它连接到文件的末尾。这是正确的吗:

${file%/}/done/${base%.$i.$ext

感谢您的帮助。

最佳答案

我已经在另一个问题中回答过了。是 ffmpeg 要求您覆盖输出文件。提供唯一名称(文件名中包含 $i)并将 -y 传递给 ffmpeg 即可解决问题。

关于linux - 为什么这个 bash 脚本需要我按回车键才能继续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/646846/

相关文章:

bash - 如何将 0 数字添加到丢失的单个符号十六进制值,bash

linux - : not a valid identifier bash export says

c++ - Linux:WAITING PID 死亡

捕获从 C 中的另一个文件调用的函数的标准输出

linux - 如何将逗号分隔的字段变成不同的行?

java - 将参数从 shell 脚本传递到 java 类

linux - 将字符串或数组中的代码插入到whiptail中

php - Yii2 不从项目文件夹调用控制台命令

bash - 如何在 Teamcity CMD 步骤失败时触发脚本?

linux - 尝试将序列号读入变量以与序列号列表进行比较以重命名机器