Выход из запущенного скрипта без выхода из оболочки - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть библиотека скриптов, которая использует много команд exit, если возникает какое-либо условие.Каждый раз, когда происходит выход, оболочка закрывается.

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

Как мне запустить этот скрипт, чтобы только скрипт останавливался, а оболочка оставалась открытой.В настоящее время я использую . script.sh.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Если вы используете библиотеку сценариев и хотите использовать все функции, определенные библиотекой сценариев, не вызывая выхода из оболочки, используйте вложенную подоболочку.

Пример:

# script.sh contents
hello_exit() { 
    echo "hello"; 
    sleep 1; 
    exit 10; 
}

# YOUR SHELL
source script.sh

# Use subshell
(hello_exit)

# If you want to capture the output and error code
output=$(hello_exit)
rc=$?
0 голосов
/ 18 сентября 2018

Вместо запуска вашего скрипта как . script.sh, вы можете запустить его bash script.sh.Когда вы запускаете его с bash, тогда открывается дочерний процесс для bash, и ваш скрипт выполняется в дочерней оболочке, а операторы выхода закрывают дочернюю оболочку и не имеют области видимости для родительской или основной оболочки.

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