Как использовать переменную, содержащую имя файла с пробелами в скрипте bash? - PullRequest
2 голосов
/ 27 июля 2011

У меня есть простой bash-скрипт, работающий на OS X, который удаляет определенные файлы и каталоги и копирует новые вместо них. В одном каталоге Mac .app содержится пробел, и при запуске сценария возникает ошибка «Нет такого файла или каталога».

Вот соответствующий код. Вырезано большое количество, поэтому просто жесткое их кодирование невозможно (переменные должны быть разбиты, как есть):

CP="cp -Rf"

INSTALL_DIR="/Applications/"

APP="The App.app"

NEWAPP="$HOME/Downloads/The App.app"

$CP "$NEWAPP " "$INSTALL_DIR$NEWAPP"

Я пытался избежать The\ App.app безуспешно, а также пытался использовать одинарные, двойные и двойные кавычки, но ничего не помогло. Я думаю, что есть простой способ сделать это.

Спасибо за вашу помощь.

Ответы [ 2 ]

4 голосов
/ 27 июля 2011

У вас там есть дополнительное пространство, просто

"$ NEWAPP"

0 голосов
/ 27 июля 2011

заключите всю заключительную строку в кавычки:

"$CP $NEWAPP $INSTALL_DIR$NEWAPP"

Нет необходимости продолжать открывать и закрывать кавычки здесь, и $ CP должен содержаться в кавычках, так как CP содержит пробел.

...