Ich schreibe ein Skript, das Eingabeoptionen in einer von einer Funktion bereitgestellten While-Schleife anzeigt user_input()
und Werte abhängig von der Benutzereingabe einstellt. Dann rufe ich eine andere Funktion auf user_info()
. Wenn ein Benutzer einen Fehler macht, versuche ich ihm anzubieten, zurückzugehen und seine Eingabe zu korrigieren. Wenn ein Benutzer also $var
versehentlich „Ja“ eingestellt hat, kann er zurückgehen und die Option zurücksetzen! Angenommen, der Benutzer hat auf $var
„Nein“ zurückgesetzt, gibt es dann eine Möglichkeit, nicht bei fortzufahren code (2)
, sondern zur elif
Anweisung zu springen und auszuführen code (3)
? Wenn die Frage nicht klar ist, kann ich meinen Code posten, um sie klarer zu machen. Vielen Dank:
user_input(){
while true; do
input option $var
done
user_info
}
user_info(){
some code
if [ "${var}" = "Yes" ]; then
code (1)
if [ "${option}" = "back" ]; then
user_input
fi
code (2)
elif [ "${var}" = "No" ]; then
code (3)
fi
}
Antwort1
Ich glaube, ich habe eine Lösung gefunden, indem ich nach jedem Aufruf der user_input()
Funktion return wie folgt hinzufüge. Bitte korrigieren Sie mich, wenn ich einen Fehler gemacht habe. Vielen Dank:
user_input(){
while true; do
input option $var
done
user_info
}
user_info(){
some code
if [ "${var}" = "Yes" ]; then
code (1)
if [ "${option}" = "back" ]; then
user_input
return
fi
code (2)
elif [ "${var}" = "No" ]; then
code (3)
fi
}