我試圖讓這個 BASH 腳本要求使用者輸入 1 到 4 之間的值來在 case 語句中選擇忍者龜。任何其他值都會導致 $COUNTER 保持等於 0,因此需要再次執行 case 語句。但是,如果輸入 1 到 4 以外的任何值,就會陷入無限循環。
第一 - 如何在 while 迴圈內嵌套 case 語句?
第二 - 如何使此腳本要求使用者輸入 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