传递空格将字符串转换为脚本

时间:2014-11-23 09:47:45

标签: linux bash shell ffmpeg

我使用这么小的脚本将我的SAT接收器中的视频转换为h264 / mp3格式。

[maciek@piotr Pobrane]$ cat ./conv_sat_to_clean_ts 
#!/bin/bash
ffmpeg -i $1.ts -movflags +faststart -vcodec h264 -acodec mp3 -f mpegts $1-new.ts

问题在于,当我以这种方式调用该脚本时:

./conv_sat_to_clean_ts ./Operacja\ Dunaj.ts

它显示了一个错误:

./Operacja: No such file or directory

这意味着忽略调用参数中包含的空格,并且不能正确解释文件名。 有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

$1用双引号括起,因为filename有空格。

ffmpeg -i "$1".ts -movflags +faststart -vcodec h264 -acodec mp3 -f mpegts "$1"-new.ts

并运行没有.ts

的脚本

./conv_sat_to_clean_ts ./Operacja\ Dunaj

./conv_sat_to_clean_ts "Operacja Dunaj"

答案 1 :(得分:0)

是。 RBH是对的。现在我的脚本看起来像这样并正常工作。

#!/bin/bash
ffmpeg -i "$1" -movflags +faststart -vcodec h264 -acodec mp3 -f mpegts NEW-"$1"

文件名中的空格(作为脚本调用参数)被正确解释