如何使用带有空格的路径作为环境变量?

如何使用带有空格的路径作为环境变量?

我在 Mac 上,尝试使用环境变量作为参考持有者来运行命令。

例如,我有一个文件,其路径如下:

/应用程序/Android Studio.app/Contents/Info.plist

我正在尝试使用 cat 命令读取它。从这个那么问题来了,我可以使用反斜杠或引号来使用该路径,如下所示:

猫/应用程序/Android \ Studio.app/Contents/Info.plist

或者

猫“/应用程序/Android Studio.app/Contents/Info.plist”

极好的!

但是,假设我使用 export 将路径导出为环境变量:

导出 AS_HOME="/Applications/Android Studio.app/Contents"

然后我想使用环境变量读取 Info.plist 文件:

//重启或者刷新终端设置

源 ~/.profile

猫$AS_HOME/Info.plist

这会引发一个错误,因为它无法理解路径。我尝试过以两种方式设置环境变量(一种使用引号,另一种使用反斜杠)。当我将 echo 命令与该环境变量一起使用时,它会正常打印出来。

对此有什么想法/解决方法吗?

答案1

cat "$AS_HOME/Info.plist"应该可以解决问题。

答案2

您正在学习安全 shell 脚本的首要规则之一:始终用引号括住包含变量的路径。因此,您的最后示例行应该是:

cat "$AS_HOME/Info.plist"

请注意,双引号允许美元符号表达式继续扩展,而大多数其他特殊字符含义将被转义(忽略)。单引号在这里不起作用,因为它们会转义美元符号表达式。

相关内容