【发布时间】: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 ... < /dev/null。 -
似乎对我有用……
-
或者,我们可以从不同的文件描述符中读取:
while read -u3 line ... 3< "$input" -
您可以使用
ffmpeg选项-nostdin代替< /dev/null
标签: bash loops while-loop ffmpeg