Ich habe die Anweisung "exit 1" in meinen Bash-Funktionen verwendet, um das gesamte Skript zu beenden, und es hat gut funktioniert:
function func()
{
echo "Goodbye"
exit 1
}
echo "Function call will abort"
func
echo "This will never be printed"
Aber dann wurde mir klar, dass es nicht funktioniert, wenn es wie folgt aufgerufen wird:
res=$(func)
Ich verstehe, dass ich eine Unterschale erstellt habe und "exit 1" diese Unterschale abbricht und nicht die primäre ...
Aber gibt es eine Möglichkeit, eine Funktion zu schreiben, die die gesamte Ausführung abbricht, egal wie sie aufgerufen wird? Ich muss nur den tatsächlichen Rückgabewert ermitteln (von der Funktion bestätigt).
setsid()
Funktion gedacht , aber sie funktioniert nicht ganz so. Aktualisiert, um densetsid
Befehl nicht zu verwenden , da wir einen neuen Prozess starten müssten.