【发布时间】:2012-09-14 15:35:11
【问题描述】:
我有这个 bash 脚本,用于将 .mp4 视频转换为 .mp3 音频。
它运行,但只循环一次,尽管/home/myname/mp4dir 中有更多 mp4 文件。
脚本将它找到的第一个.mp4 文件转换为.mp3,除非已经存在.mp3 文件。这应该在循环中完成,但在第一次调用 ffmpeg 后脚本会停止。
为什么?
#!/bin/bash
find /home/myname/mp4dir -name "*.mp4" | while read f
do
fOut=`echo $f | sed s/mp4/mp3/`
echo "convert $f => $fOut"
if ! test -f $fOut
then
ffmpeg -i $f -vn -f mp3 $fOut
fi
done
【问题讨论】:
-
用
echo $f替换循环体是否有效? -
是的,所有 .mp4 文件都已列出。该脚本在第一次 ffmpeg 执行后停止。如果我将其注释掉并用回显替换它,它将适用于所有 .mp4 文件。
-
使用
bash -x youscript.sh运行脚本时会看到什么?ffmpeg命令完成了吗? -
bash -x youscript.sh循环执行不止一次;几个 ffmpeg 调用的输出显示。有什么区别? -
编辑:对不起,我的错:行为与直接调用脚本相同:它只执行一次。
标签: bash loops while-loop ffmpeg