Bash 使用 while 和 case 的脚本错误

Bash script error using while and case

第一次在这里提问,还在学习中bash,请多多包涵。

我用 while 和 case 制作了一个主屏幕,它应该可以工作,但没有,我不知道我在哪里犯了错误。


while [ $WH!=5 ]
do

echo "Choice menu:"
echo "          1) Option 1"
echo "          2) Option 2"
echo "          3) Option 3"
echo "          4) Option 4"
echo "          5) End script"
echo -n "Choose an option: "
read $OP

case $OP in
        1)
            # code;;

        2)
            # more code;;

        3)
            # more code;;

        4)
            # even more code;;

        5)
            echo "Thank you for testing this script!"
            $WH=5;;
esac
done

无论我在 $OP 中输入什么,脚本都会不断重复选择菜单,直到我取消它。我尝试移动并使用 $OP 作为条件,但似乎没有任何效果。

您的脚本中存在多个问题:-

  1. while 构造需要 while [ "$WH" != 5 ]。请记住对所有 shell 变量进行双引号。
  2. read命令应该是read OP
  3. case 结构需要至少一行以 ;;
  4. 结尾
  5. 最后的赋值语句应该是WH=5而不是$WH=5

使用 https://www.shellcheck.net 来调试这些微不足道的问题。