我正在尝试获取用户输入。
输入应为“1”或“2”。
由于某些原因,即使输入1或2,我也会不断得到提示。
read -p "Your choice: " UserChoice
while [[ "$UserChoice" != "1" || "2" ]]
do
echo -e "\nInvalid choice please choose 1 or 2\n"
read -p "Your choice: " UserChoice
done
多谢您的协助
谢谢!
最佳答案
!=
不会分布在||
上,后者将两个完整的表达式连接在一起。解决此问题后,您还需要使用&&
而不是||
。
while [[ "$UserChoice" != "1" && "$UserChoice" != "2" ]]
实际上,
bash
确实支持模式匹配,可以与您所想到的类似地使用它。while [[ $UserChoice != [12] ]]
设置了
extglob
选项(我相信默认情况下,它从bash 4.2开始在[[ ... ]]
中处于启用状态),您可以使用非常接近最初的设置:while [[ $UserChoice != @(1|2) ]]
关于bash - 而变量不等于x或y bash,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25877637/