/ / wyjście z funkcji w skrypcie powłoki podrzędnej do skryptu powłoki nadrzędnej - bash, shell

wyjście z funkcji w skrypcie powłoki podrzędnej do skryptu powłoki nadrzędnej - bash, shell

Używam skryptu bash, próbuję wyjść z funkcji w skrypcie powłoki podrzędnej do skryptu powłoki nadrzędnej z zwracanym kodem stanu.

Script1.sh
echo "hello script1"
. ./script2.sh
echo $?

Script2.sh
status()
{
echo "status"
return 1
}
status
echo "Hello shell2"

Ten skrypt wypisuje "status" i "Hello shell2", ale chcę wyjść z funkcji statusowej skrypt2.sh do script1.sh bez drukowania "Hello shell2".

Sprawdziłem kilka pytań w stosach przepełnionych tymi rozmowami na temat powrotu ze skryptu dziecięcego do rodzica, a nie z funkcji dziecka na rodzica.

Z góry dziękuję, Soman

Odpowiedzi:

3 dla odpowiedzi № 1

Nie możesz określić, ile poziomów "do góry" powrócić, ale możesz odpowiedzieć na kod zakończenia połączenia status zwracaj tak jak obecnie, a skoro jesteś źródłem pliku, zmień połączenie do status do

status || return

Spowoduje to, że skrypt źródłowy powróci do rodzica, jeśli status ma niezerowy status wyjścia.