如何在Bash脚本中使用三元运算符?解决‘==: command not found’报错
Bash脚本条件赋值报错问题解决
你遇到的错误有两个核心原因:
- Bash不支持类C语言的
条件 ? 结果1 : 结果2三元运算符语法 - 变量赋值时等号前后不能有空格,你写的
oname = ...会让Bash把oname识别为命令,=作为参数,进而找不到==这个命令
正确写法1:用条件判断组合实现类似三元逻辑
# 赋值时等号前后无空格,用&& ||分支控制输出 oname=$([[ "$OPTION" == "1" ]] && echo "OPTION ONE" || echo "OPTION TWO") echo "Your selection was: ${oname}"
如果OPTION是数值类型,也可以用数值比较符-eq:
oname=$([[ "$OPTION" -eq 1 ]] && echo "OPTION ONE" || echo "OPTION TWO")
正确写法2:用case语句(更适合多分支扩展)
如果后续可能增加更多选项,case语句的可读性和扩展性更好:
case "$OPTION" in 1) oname="OPTION ONE" ;; 2) oname="OPTION TWO" ;; *) oname="UNKNOWN OPTION" ;; # 可选,处理非1/2的输入 esac echo "Your selection was: ${oname}"
内容的提问来源于stack exchange,提问作者Maik Lowrey
相关产品推荐
相关产品推荐

