Как выйти из нескольких bash скриптов - PullRequest
0 голосов
/ 31 марта 2020

У меня есть сценарий bash, который вызывает несколько сценариев bash.

Например:

script1. sh

source script_data.sh
bash script2.sh
variables
code ...

script2. sh

source script_new.sh
...
bash script3.sh
varialbles ...
code ...

script_data. sh

someVariable=1
functions() ...
...

script3. sh

code ...
variables ...
exit 0

Проблема заключается в том, что когда мне нужно выйти из script3 с выходом 0, код будет go в script2. sh

Как я могу выход из всего процесса?

С уважением,

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Замените bash script2.sh на source script2.sh, и выход в script2.sh находится в том же процессе, что и script1.sh.

Проверьте свой код перед выбором этого решения. После изменения кода изменения в среде script2.sh также производятся в среде script1.sh.

0 голосов
/ 31 марта 2020

Я личный фанат использования функций. Переопределите ваши дополнительные bash сценарии как bash функции . Я имею в виду это руководство все время для bash вопросов стиля.

Это не будет работать: source Script_1.sh
Script_1. sh

echo "Do stuff" # Some code here
source Script_2.sh
echo "Do more stuff" # Some more code here

Script_2. sh

echo "Do stuff" # Some code here
exit 0

Это будет работать: source New_Script_1.sh
New_Script_1. sh

Function_2() { 
    echo "Do stuff" # Some code here
    return 0
}

echo "Do stuff" # Some code here
Function_2
echo "Do more stuff" # Some more code here

Функциональность того, что когда-то было Scrpit_2. sh теперь существует в Function_2 . Вам не нужно return 0 в конце, вы можете набрать любое число до 8 бит (0-255), если хотите. Возвращаемое значение из функции bash будет сохранено в переменной среды $? и будет доступно только сразу после вызова функции (строка после).

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