入れ子になった Case ステートメントで while ループを抜ける方法は? [閉鎖]

入れ子になった Case ステートメントで while ループを抜ける方法は? [閉鎖]

以下のスクリプトでは、ユーザーは間違っている可能性があるスクリプトを実行し続けるかどうかを確認するように求められます。ユーザーがメッセージに従って入力すると、ブロックYから離れてループに戻ります。casewhile

#! /bin/bash
set -e

echo
echo "bad install start"
echo "-----------------------------------------"

while true; do
        read -p "this script will probably fail - do you want to run anyway?" yn
        case $yn in
                [Yy]*)
                        ##### WHAT GOES HERE?? #####
                        ;;
                [Nn]*)
                        exit ;;
                *)
                        echo "answer y or n" ;;
        esac

        echo "script has broken out of case back into while loop"
done

echo -e "\e[33m Installing bad packagename \e[0m"
apt-get install sdfsdfdfsd

echo "rest of script - will i keep running?"

入力すると、nスクリプトが期待どおりに正確に存在します。Yスクリプトを入力するときにこれらの2つを破るためにこれを行う方法を知りたいです。case そしてwhileブロックですが、完全に終了するわけではありません。そのためにプレースホルダー(「ここに何がありますか?」)を追加できますか?

ベストアンサー1

ユーザーが「y」と入力すると、whileとCaseを終了できます。

break [n]
       Exit from within a for, while, until, or select loop.  If  n  is
       specified, break n levels.  n must be ≥ 1.  If n is greater than
       the number of enclosing loops, all enclosing loops  are  exited.
       The  return  value is 0 unless n is not greater than or equal to
       1.

あなたが心配している限り、あなたはそれをしたいと思いますbreak 2

おすすめ記事