関数呼び出し後にスクリプトの実行を再開する

関数呼び出し後にスクリプトの実行を再開する

私は、関数によって提供される while ループで入力オプションを表示しuser_input()、ユーザー入力に応じて値を設定し、別の関数を呼び出すスクリプトを作成していますuser_info()。ユーザーが間違いを犯した場合、戻って入力を修正できるようにしたいと考えています。したがって、ユーザーが$var誤って「はい」に設定した場合、戻ってオプションをリセットできます。ユーザーが「いいえ」にリセットしたと仮定すると、 で再開するのではなく、ステートメントにジャンプして を実行$varする方法はありますか? 質問が明確でない場合は、コードを投稿してわかりやすくすることができます。どうもありがとうございます。code (2)elifcode (3)

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
}

答え1

このように関数の各呼び出しの後に return を追加することで解決策を見つけたと思います。user_input()間違いがあれば訂正してください。どうもありがとうございます:

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
}

関連情報