我试图让这个 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