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