Я пытаюсь указать переменную для открытия файла в определенном приложении, но как бы я ни пытался ссылаться на нее, она не работает.
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
The file /Users/matthew/Text.app does not exist
Это дает мне одну и ту же ошибку для каждого, поэтому я предполагаю, что они эквивалентны. Даже когда я пробую cd $sublime, он тоже терпит неудачу, но немного иначе ...
bash: cd: /Applications/Sublime: No such file or directory
Обновлять:
Чарльз предложил использовать функцию для выполнения задачи быстрого открытия чего-то в возвышенном.
sublime() { open "$@" -a "/Applications/Sublime Text.app/"; }
Позволит вам просто бежать
sublime ~/.zshrc
Возможный дубликат Как перейти в каталог с пробелом в имени?
Кстати, неплохо было бы поместить необязательные аргументы перед в позиционные - это единственный синтаксис, который гарантирует, что Рекомендации по синтаксису служебной программы POSIX будет поддерживаться (ищите «Директива 9»). Таким образом, open -a "$sublime1" ~/.zshrc
Спасибо @benjamin, я всегда рад за такие маленькие советы
См. sublimetext.com/docs/3/osx_command_line.html.





Эти задания верны:
sublime1=/Applications/Sublime\ Text.app/ sublime3 = "/Applications/Sublime Text.app/"
Проблема в вызове. Переменные, используемые в качестве аргументов командной строки, подвержены разделению слов и подстановке слов. Вам нужно заключить их в двойные кавычки, например:
open ~/.zshrc -a "$sublime1"
open ~/.zshrc -a "$sublime3"
Это исправляет. Я надеялся сэкономить несколько нажатий клавиш, определив переменную $sublime, но необходимость помещать перед ним знак доллара и заключать его в кавычки почти лишает цели. Как обойти это?
@MatthewWolff, используйте функцию, а не переменную. sublime() { open "$@" -a "/Applications/Sublime Text.app/"; }, затем можно запустить sublime ~/.zshrc
@MatthewWolff, ... кстати, поскольку ваша цель - использовать переменные для хранения команд или их частей, см. BashFAQ # 50.
попробуйте использовать sublime1=$(/Applications/Sublime/Text.app)
и используя chmod 770 Text.app в Text.app в командной строке
Извините за мой английский...
var=$(...) присваивает переменной выход.... OP не хочет назначать вывод выполнения Text.app; вместо этого они хотят сохранить путь к самой команде.
Цитируйте
"$sublime1", или оболочка разбивает слова на пробелы.