我正在使用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
答案 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引号("
),而不是链接中错误消息所暗示的“智能”引号(“
)。