在 OS X 中传递带有空格的路径作为参数

在 OS X 中传递带有空格的路径作为参数

我无法将内部带有空格的路径作为参数传递。

keyLocation="/Users/vladimir/Google\ Drive/file.pem"
ssh -i $keyLocation [email protected];

这给了我以下错误:

警告:身份文件/Users/vladimir/Google 无法访问:没有此文件或目录。

基本上,在分配 keyLocation 本身之后,它变为 "/Users/vladimir/Google Drive/file.pem" (否),因此当它尝试使用 $keyLocation 作为参数时,它会将其传递为

ssh -i /Users/vladimir/Google Drive/file.pem [email protected]

我怎样才能让 ssh 命令将其识别为包含空格的路径?

答案1

你搞混了一点。引号内的空格不需要转义。当你扩展包含空格的变量时,一定要用引号括起来。

keyLocation="/Users/vladimir/Google Drive/file.pem"
ssh -i "$keyLocation" [email protected]

看:引号和转义 [Bash Hackers Wiki]

答案2

Frank 在评论中回答了这个问题:

$"$keyLocation"

谢谢,弗兰克。

答案3

对于我来说,将路径存储到变量中并没有起到作用。

另一种方法是使用符号链接

ln -s ~/Google\ Drive/ Drive

之后你可以使用

ssh -i ~/Drive/file.pem [email protected]

希望这对别人有帮助!

相关内容