Bash如何对单字符变量做多条件分支?参考对应Python代码实现
Bash实现多条件分支的方案
最简洁清晰的实现方式是直接使用Bash内置的case分支结构,完全匹配原Python代码的逻辑,不需要调用任何外部工具:
#!/bin/bash var='1' case "$var" in # 匹配任意单个字符1/2/3,对应Python的var in '123' [123]) echo 'in 123' ;; x) echo 'is x' ;; y) echo 'is y' ;; esac
逻辑说明
- 对
$var加双引号是通用兼容写法,避免变量为空或带特殊字符时出现语法错误 - 通配符
[123]天然支持单个字符的范围匹配,和原Python的成员判断逻辑完全等价 - 每个分支末尾的
;;表示匹配成功后直接跳出结构,不会继续匹配后续分支,和Python的elif执行逻辑完全一致 - 如果需要对应Python的
else兜底分支,只需在最后加一行*) 兜底执行的命令 ;;即可
如果你更习惯类Python的if写法,也可以用Bash的扩展测试结构实现:
#!/bin/bash var='1' if [[ $var == [123] ]]; then echo 'in 123' elif [[ $var == 'x' ]]; then echo 'is x' elif [[ $var == 'y' ]]; then echo 'is y' fi
内容的提问来源于stack exchange,提问作者P i
相关产品推荐
相关产品推荐

