Bash脚本的switch case语句能否组合两个判断条件?
Bash多变量case分支匹配实现方法
错误原因
Bash原生case语句仅支持对单个字符串做模式匹配,你代码中直接传入"$x" "$y"两个变量的写法不符合语法规范,所以会触发语法错误。
同时你需求中明确x、y的取值是0/1,但代码分支中匹配的是zero/one字符串,二者逻辑不统一,也会导致匹配失败。
正确实现方案
核心思路是把两个变量用无歧义的分隔符(比如冒号:、下划线_)拼接成单个字符串,再用case匹配拼接后的结果即可:
echo "enter x" read x echo "enter y" read y # 拼接两个变量为单个字符串 case "${x}:${y}" in "0:0") echo "condition 1: x=0、y=0" ;; "0:1") echo "condition 2: x=0、y=1" ;; "1:0") echo "condition 3: x=1、y=0" ;; "1:1") echo "condition 4: x=1、y=1" ;; # 可选:加默认分支处理非法输入 *) echo "非法输入:x和y只能取值0或1" ;; esac
如果你确实需要匹配zero/one的字符串值,只需把对应分支的匹配规则改成"zero:zero"、"zero:one"即可,逻辑完全一致。
内容的提问来源于stack exchange,提问作者user3559780
相关产品推荐
相关产品推荐

