bash - 提供变量作为文件路径

时间:2018-03-16 18:19:07

标签: bash shell environment-variables

我正在尝试使用特定应用指定一个用于打开文件的变量,但无论我如何尝试引用它,它都无效。

sublime1=/Applications/Sublime\ Text.app/
sublime2="/Applications/Sublime\ Text.app/"
sublime3="/Applications/Sublime Text.app/"

我一直在尝试设置变量的不同方法,但对于我尝试过的每个变体,它都会失败。

open ~/.zshrc -a $sublime1
open ~/.zshrc -a $sublime2
open ~/.zshrc -a $sublime3
  

文件/Users/matthew/Text.app不存在

它给了我每个相同的错误,所以我认为它们是等价的。即使我尝试cd $sublime它也会失败,但略有不同......

  

bash:cd:/ Applications / Sublime:没有这样的文件或目录

更新
Charles建议使用函数来完成快速打开崇高内容的任务。

sublime() { open "$@" -a "/Applications/Sublime Text.app/"; }

允许您简单地运行

sublime ~/.zshrc

2 个答案:

答案 0 :(得分:4)

这些作业是正确的:

sublime1=/Applications/Sublime\ Text.app/
sublime3="/Applications/Sublime Text.app/"

问题在于调用。用作命令行参数的变量受单词拆分和通配操作的影响。你需要对它们进行双引号,如下所示:

open ~/.zshrc -a "$sublime1"
open ~/.zshrc -a "$sublime3"

答案 1 :(得分:-2)

尝试使用sublime1=$(/Applications/Sublime/Text.app)

并在命令行中的Text.app上使用chmod 770 Text.app

抱歉我的英语......