我运行下面的bash脚本转动我的手机西元Bash while循环无故停止?
while read filename ; do
nf=$(echo $filename |rev | cut -f1 -d '/'|cut -f2- -d '.' |rev)
echo $nf
rm -f ffmpeg2pass-0.log
rm -f rotate/tmp.avi
ffmpeg -i $filename -c:v libxvid -pass 1 -c:a libmp3lame -qscale:a 4 -vf "transpose=2,transpose=2" "rotate/tmp.avi"
ffmpeg -i $filename -c:v libxvid -pass 2 -c:a libmp3lame -qscale:a 4 -vf "transpose=2,transpose=2" "rotate/$nf.avi"
done <rotatelist_2
我知道有更好的方法来做到这一点;我一起评论这一点,但我搞清楚如何做视频,所以其余的不需要看起来不错;-))
然而,第一次运行后,循环意外结束,没有错误信息。我运行类似的循环来处理其他非常好的工作。
回声没有被再次调用,所以我猜这个循环本身有问题。列表中的换行符是0x0A,所以它应该没问题。
'rotatelist_2'的内容是什么? – Wintermute 2015-01-26 21:54:01
循环内的任何命令是否也读取标准输入?如果是这样,它会吃剩下的'rotatelist_2'。看起来它必须是'ffmpeg',所以我不会评价它的可能性。你可以使用'while read -u 3 filename;做...;完成3
2015-01-26 21:59:00
那个丑陋的第二行可以用'basename'替换。这假设文件扩展名总是相同的,如果不是,就像'$ {x%。*}'会做的那样(详细信息在* bash手册页中删除匹配的后缀模式*。) – Marian 2015-01-26 22:11:18