このようなソリューションを試してみてはいかがでしょうか?
関数はループ(ループ?)として実行されます。そのループ内には、ループを使用する別の関数があります。 2番目の関数がユーザーから応答を受け取らない場合は、break 2
ループを停止してデフォルトのスクリプト操作を続行するように送信します。
この関数はファイルに設定された変数を使用します。
それでは、変数を関数の引数として使用するのは良い考えですか?
答え1
よりきちんとした選択肢は、ユーザーが話したanswer
かどうかに応じて0を返すか、1を返すことです。その後、呼び出された場所で値をテストし、ゼロが返された場合にのみ操作が実行されます。yes
no
answer
answer
前のスクリプトに基づいて、次のようになります。
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
}