2017-08-03 79 views
-2
#!/bin/bash 
echo "Bash version ${BASH_VERSION}..." 
for f in *.webm; do 
    uuid=$(uuidgen) 
    ffmpeg -i $f -vcodec libx264 -preset slow -crf 18 -vf scale=720:-2 ${uuid}.mp4 
done 

./convert.sh:line 3:語法錯誤在意外標記附近$'do\r'' '/convert.sh: line 3: for * in .webm;做bash中的循環throgh文件名

我在一個文件夾中有很多.webm文件,我想用ffmpeg將它們全部轉換!

問題是關於Windows。 我在Windows上使用Bash,它給了我很多問題。

+3

文件有回車,刪除它們。 – 123

+0

這是關於回車。謝謝! – nickbm94

回答

-3

嘗試:

... 
for f in `ls *.webm`; do 
... 
done 
+2

'* .webm'中的f是_exactly_如何做到這一點。你所建議的是一個完整的反模式。 –

+0

+1 @TomFenech你已經提到'[[$(...)]]'也是一個反模式。您能否給我們提供一份文檔或其他參考資料,介紹bash反模式的更多細節。 – Anubis

+1

https://stackoverflow.com/q/4708549/2088135解釋反推反推的原因。 '[[$()]]'不一定是錯誤的,但通常來自對shell中測試工作的誤解。搜索「shell反模式」,你會發現很多信息。另外[bash標籤wiki](https://stackoverflow.com/tags/bash/info)有很多有用的鏈接。 –