2015-05-11 3 views
0

Я пытаюсь запустить скрипт, который устанавливает некоторые файлы в каталоге, который указывает пользователь. Как только пользователь укажет каталог, я хотел бы передать основной файл в этот каталог, чтобы он мог выполнять так много задач там, прежде чем, в конечном счете, удалиться после завершения.Сценарий Bash, не выполняющий скрипт bash

#prompt for directory in which to build project 
    read -p "Drag and drop the directory in which you'd like to build this project: " 

    echo "reply is $REPLY" 
    cp ./myScript.sh $REPLY 
    /bin/bash $REPLY/myScript.sh 

У меня есть сценарий, чтобы выполнить файл из этого question. Я попытался сделать это с source $REPLY/myScript.sh, а также просто sh $REPLY/myScript.sh. Я получаю сообщение об ошибке /path/to/file/ is a directory

Должно быть, это неизвестно. Я пытаюсь запустить myScript.sh, но я не понимаю, как я дал ему каталог.

ответ

1

Вероятная причина заключается в том, что перетаскивание помещает пробелы после имени каталога.

Таким образом:

/bin/bash $REPLY/myScript.sh 

будет работать под управлением

/bin/bash /path/to/directory /myScript.sh 

легко исправить, если это только стандартное пространство, было бы:

/bin/bash "${REPLY% }/myScript.sh" 
+0

Ура! Как этот процентный символ разрешает это? – 1252748

+0

@thomas, это расширение параметра, которое разделяет конечное пространство. См. Http://wiki.bash-hackers.org/syntax/pe для полной справки или http://mywiki.wooledge.org/BashFAQ/073 для более мягкого введения. –

-2

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

#prompt for directory in which to build project 
    read -p "Drag and drop the directory in which you'd like to build this project: " REPLY 
+1

Неправда. 'read' по умолчанию хранится в переменной' $ REPLY'. (Это скорее бахизм, чем поведение POSIX, но тогда это вопрос, помеченный для bash). –

Смежные вопросы