私はこのBASHスクリプトで、ユーザーがケースステートメントからNinja Turtleを選択するために1から4の間の値を入力するように要求しようとしています。他の値を使用すると、$ COUNTERはゼロのままになるため、Caseステートメントを再実行する必要があります。ただし、1〜4以外の値を入力すると、無限ループに陥ります。
最初 - whileループ内にケースステートメントを入れ子にする方法は?
2番目 - このスクリプトを作成してユーザーに1〜4の値を入力するように要求する方法
#!/bin/bash
echo "What is your favorite Ninja Trutle?"
echo "1 - Raphael."
echo "2 - Leonardo."
echo "3 - Michelangelo"
echo "4 - Donatello"
read TURTLE;
COUNTER=0;
while [ $COUNTER -eq 0 ]
do
$COUNTER=$(( $COUNTER + 1 ))
case $TURTLE in
1) echo "Raphael is cool, but rude.";;
2) echo "Leonardo leads.";;
3) echo "Michelangelo is a party dude.";;
4) echo "Donatello does machines.";;
*) echo "Did you even watch the show?"
$COUNTER=0
;;
esac
done
あなたが提供できる助けに感謝します。
答え1
増加する行でエラーが発生しますCOUNTER
。$
変数名を逆参照してその値を取得したい場合は、この記号を使用してください。変数に値を割り当てるときは使用されません。この行は次のようになります。
COUNTER=$(( $COUNTER + 1 ))
そして
COUNTER=0
また、case
コマンドがループ内にあるため、while
ユーザーが誤った値を入力した場合に再びメッセージを表示したいとします。その場合は、そのread
ステートメントもループ内に配置する必要があります。while