【问题标题】:While loop in bash executes only once [duplicate]bash中的while循环仅执行一次[重复]
【发布时间】:2018-11-27 07:57:54
【问题描述】:

我有一个文件 sorted_result.txt,它包含以下内容:

00:7:11.8
00:8:32.0
00:9:16.8
00:19:1.6
00:24:22.84

当我运行以下代码时,while 循环只执行一次,而不是针对文件中的每一行运行。

#!/bin/bash

input="./sorted_result.txt"

count=1
initial=00:00:00
sixty=60
while read line
do
  ffmpeg -i cnbc.avi -vcodec h264 -vf fps=25 -ss $initial -to $line $count.avi
  count=$((count + 1))
  initial=$line
done < "$input"

请帮忙

【问题讨论】:

  • shellcheck.net 注意到 ffmpeg 可能会吃掉你的标准输入的其余部分,这将防止循环再次发生
  • 您可以通过将ffmpeg ... 替换为echo ffmpeg ... 来验证@EricRenouf 的提示是否存在问题。如果是这样,修复是ffmpeg ... &lt; /dev/null
  • 似乎对我有用……
  • 或者,我们可以从不同的文件描述符中读取:while read -u3 line ... 3&lt; "$input"
  • 您可以使用ffmpeg 选项-nostdin 代替&lt; /dev/null

标签: bash loops while-loop ffmpeg


【解决方案1】:

解决方案是在ffmpeg-i之间使用-nostdin

【讨论】:

    猜你喜欢
    • 2018-09-11
    • 1970-01-01
    • 2016-09-07
    • 2015-04-02
    • 2015-06-19
    • 2023-03-10
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多