break コマンドを関数の引数として使用する

break コマンドを関数の引数として使用する

このようなソリューションを試してみてはいかがでしょうか?

関数はループ(ループ?)として実行されます。そのループ内には、ループを使用する別の関数があります。 2番目の関数がユーザーから応答を受け取らない場合は、break 2ループを停止してデフォルトのスクリプト操作を続行するように送信します。

この関数はファイルに設定された変数を使用します。

それでは、変数を関数の引数として使用するのは良い考えですか?

答え1

よりきちんとした選択肢は、ユーザーが話したanswerかどうかに応じて0を返すか、1を返すことです。その後、呼び出された場所で値をテストし、ゼロが返された場合にのみ操作が実行されます。yesnoansweranswer

前のスクリプトに基づいて、次のようになります。

while tomcat_running && user_wants_to_stop_tomcat; do
    echo "$tomcat_status_stopping"
    kill $RUN
    sleep 2
done

function tomcat_running() {
    check_tomcat_status
    [ -n "$RUN" ]
}

function user_wants_to_stop_tomcat() {
    answer "WARNING: Tomcat still running. Kill it? "
}

function answer() {
    while true; do
        printf "$1"
        read response
        case $response in
        [yY][eE][sS]|[yY])
            return 0
            ;;
        [nN][oO]|[nN])
            return 1
            ;;
        *)
            printf "Please, enter Y(yes) or N(no)!\n"
            ;;
        esac
    done
}

関連情報