Fortsetzen der Ausführung eines Skripts nach einem Funktionsaufruf

Fortsetzen der Ausführung eines Skripts nach einem Funktionsaufruf

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 $varversehentlich „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 elifAnweisung 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
}

verwandte Informationen