условно завершить выполнение сценария оболочки - PullRequest
1 голос
/ 05 октября 2011

Я пишу сценарий bash, который использует getopt для обработки ряда параметров, указанных после имени сценария.

Я получаю доступ к своей оболочке через puTTy.

Я вызываю скрипт с помощью. scriptname.sh -o --options (есть ли лучший способ выполнить скрипт bash?)

Я бы хотел иметь возможность прервать / остановить скрипт, но всякий раз, когда я использую exit, он не только выходит из скрипта, но и закрывает окно терминала / puTTy.

... что-то вроде поражения цели, потому что я пытаюсь настроить какой-то вывод текста --help, который отображает текст, но не выполняет остальную часть сценария.

Какое дело с exit и что я должен использовать, чтобы остановить / прервать сценарий, не закрывая окно родительской консоли?

1 Ответ

8 голосов
/ 05 октября 2011

Использование exit правильно, вы просто не выполняете свой скрипт правильно.

Использование . аналогично использованию команды source (help source для использования) и не является хорошей идеей, если вы действительно хотите выполнить скрипт.

Вместо chmod a+x scriptname.sh, а затем используйте ./scriptname.sh для его вызова.

Разница в том, что source обрабатывает скрипт так, как если бы он был напечатан вами; он запускается в том же сеансе bash, который вы используете в интерактивном режиме. Это означает, что любые переменные, которые он изменяет, остаются измененными после его завершения. Это также означает, что если вы скажете сценарию exit, он будет корректно завершить ваш текущий сеанс bash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...