Условно завершить выполнение сценария оболочки

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

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

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

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

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

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

1 ответ

Решение

С помощью exit правильно, вы просто не выполняете свой скрипт правильно.

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

Вместо chmod a+x scriptname.sh а затем использовать ./scriptname.sh чтобы вызвать это.

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

Другие вопросы по тегам