ffmpeg中的空格bash脚本文件名变量

时间:2015-08-19 17:59:11

标签: bash ffmpeg naming-conventions spaces

我正在使用OS X Yosemite。我想制作一个简单的bash脚本,允许我对视频进行转码。只要文件不在包含空格的目录中,一切都很顺利。

这是我的剧本:

"WinSta0\\default"

最初,我没有关于变量的双引号,但是我读了一些使用它作为解决方案的堆栈溢出。我宁愿不必更改路径或添加斜线等。我想运行:

#!/bin/sh

ffmpeg -i “$1” -c:v ffv1 -level 3 -g 1 -c:a copy “$1.mkv” 

这是我得到的错误:

 ./script.sh filename.mov 

1 个答案:

答案 0 :(得分:2)

你引用了两次空格:

./firstscript.command "/Users/bla/Desktop/untitled\ folder\ 2/v210.mov.mkv"

应该只是

./firstscript.command "/Users/bla/Desktop/untitled folder 2/v210.mov.mkv"

引用的字符串"foo"相当于\f\o\o;每个角色都被逃脱了。原件中的反斜杠被视为文字反斜杠。

在脚本中,您仍然需要引用参数扩展:

ffmpeg -i "$1" -c:v ffv1 -level 3 -g 1 -c:a copy "$1.mkv"

请注意,您必须使用常规ASCII引号("),而不是链接中错误消息所暗示的“智能”引号()。