【发布时间】:2020-06-27 03:22:58
【问题描述】:
对 bash 脚本非常陌生,我正在学习如何在 case 语句中使用多个案例和输入。
#!/usr/bin/env bash
echo "Choose from 1,2"
read -p "Enter here : " input1
echo "Choose from a,b"
read -p "Enter here : " input2
while true; do
case $input1+$input2 in
1+a )
echo "You have chosen 1 and a"
break;;
1+b )
echo "You have chosen 1 and b"
break;;
2+a )
echo "You have chosen 2 and a"
break;;
2+b )
echo "You have chosen 2 and b"
break;;
*+* )
echo "Invalid input";;
esac
done
PS \ 我知道我可以使用单个通配符星号来覆盖剩余的可能性,当我只需要通配符用于单个情况而不需要同时使用通配符时,我只使用了两次。
目前
- 其他一切正常,但如果我尝试通过输入随机数来调用无效输出,它就是无限垃圾邮件 - 无效输出。
期待
- 如果用户输入了 case 语句未涵盖的任何内容,则仅回显“无效输出”一次并重新运行 case 语句(即再次回显这 2 个问题)
有人可以建议我如何解决它
【问题讨论】:
-
将
read放入循环中。 -
@Beta 感谢它现在运行良好,尽管我想修复一些小问题。假设我正确输入了第一个问题,只输入了第二个错误,它会重新运行这两种情况。我如何让它只运行那些输入错误的情况
-
在每个读取周围放置另一个循环并独立验证每个...
-
@DavidSainty 感谢直接验证读取本身的想法。