Назад | Перейти на главную страницу

Не удается передать путь к сценарию оболочки

Я новичок в OSX и не часто использую командную строку. Я пытаюсь использовать сценарий для автоматического развертывания, но когда я выполняю сценарий, он ищет каталог.

Я попытался:

sh myscript.sh '/Users/profiles/Desktop/Development'
sh myscript.sh /Users/profiles/Desktop/Development
sh myscript.sh -/Users/profiles/Desktop/Development

но я продолжаю получать "Нет такого файла или каталога". Как правильно это сделать?

Я знаю, что это основной вопрос, но я не могу найти простого ответа. Все, что я нахожу в Google, намного сложнее ..

ОБНОВЛЕНИЕ: в сценарии он ищет такой путь:

DIR_DEVELOP=$@

if [ -z $DIR_DEVELOP ]; then
    echo "Syntax: myscript.sh <destination>"
    exit 1

Вы должны включить трассировку в bash:

bash -x myscript.sh '/Users/profiles/Desktop/Development'

Вы увидите сообщение «Нет такого файла или каталога» сразу после строки, в которой возникает ошибка.

Вам не нужно использовать ' на вашем пути. Согласно Расширенное руководство по сценариям на Bash:

$ @
То же, что и $ *, но каждый параметр представляет собой строку в кавычках, то есть параметры передаются в неизменном виде, без интерпретации или расширения. Это означает, среди прочего, что каждый параметр в списке аргументов рассматривается как отдельное слово.

Таким образом, путь, к которому пытается получить доступ ваш скрипт, буквально '/Users/profiles/Desktop/Development' вместо того /Users/profiles/Desktop/Development