Ich habe ein BASH-Skript, das eine Funktion aufruft, die andere Funktionen aufruft:
#!/bin/bash
function foo
{
function bar
{
# do something
}
bar
}
foo
Wie kann ich bar
direkt zur Hauptfunktion zurückkehren? Der Fall ist, dass bar
Benutzereingaben verarbeitet werden und wenn es eine negative Antwort erhält, muss es zur Hauptfunktion zurückkehren, andernfalls muss es zu zurückkehren foo
.
Die Rückkehr zu foo
ist mit einer einfachen return
Anweisung kein Problem . Für den anderen habe ich Folgendes versucht (was tatsächlich funktioniert):
#!/bin/bash
function foo
{
function bar
{
if [negative] # abstract statement
then return 1
else return 0
fi
}
! bar && return
}
foo
Aber gibt es eine Möglichkeit, die nur geändert werden muss, da ich Funktionen wie foo
über das gesamte Projekt verteilt habe ( bar
die in einer Header-Datei definiert sind) bar
? Das Projekt ist ~ 2k Zeilen lang und besteht aus mehreren Dateien. Auf diese Weise wäre es viel einfacher, wenn es eine Lösung gibt.
quelle
goto
, das meines Wissens in bash nicht existiert.goto
leider keine .Antworten:
Es gibt keine gute Möglichkeit (mir ist bewusst), dies zu tun, aber wenn Sie bereit sind, den Preis zu zahlen ...
Anstatt den Code in Funktionen einzufügen, können Sie ihn in Dateien einfügen, die Sie als Quelle verwenden. Wenn die Funktionen Argumente benötigen, müssen Sie sie vorbereiten mit
set
:Drei Dateien:
testscript.sh
func_1
func_2
Ergebnis:
quelle
break 100
die Rückkehr an den Anrufer, Schleife , nicht der Anrufer Funktion .break
Ebenen übersprungen werden können, währendreturn
dies nicht möglich ist.