加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

而变量不等于x或y bash

发布时间:2020-12-15 22:28:12 所属栏目:安全 来源:网络整理
导读:我正在尝试获取用户输入. 输入应为“1”或“2”. 出于某种原因,即使我输入1或2,我仍然会得到提示. read -p "Your choice: " UserChoice while [[ "$UserChoice" != "1" || "2" ]] do echo -e "nInvalid choice please choose 1 or 2n" read -p "Your choic
我正在尝试获取用户输入.
输入应为“1”或“2”.
出于某种原因,即使我输入1或2,我仍然会得到提示.

read -p "Your choice:  " UserChoice
            while [[ "$UserChoice" != "1" || "2" ]]
            do
                echo -e "nInvalid choice please choose 1 or 2n"
                read -p "Your choice:  " UserChoice
            done

我将感激你的帮助
谢谢!

解决方法

!=不会分布在||,它连接两个完整的表达式.一旦修复,您将需要使用&&而不是||同样.

while [[ "$UserChoice" != "1" && "$UserChoice" != "2" ]]

实际上,bash确实支持模式匹配,可以类似于你的想法使用.

while [[ $UserChoice != [12] ]]

使用extglob选项集(默认情况下在[[…]]内部以bash 4.2开头,我相信),你可以使用非常接近你原来的东西:

while [[ $UserChoice != @(1|2) ]]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读