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 № 1Nie 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.