核心:用||(或)连接两个条件。根据你用的判断方式有几种写法。
一、[ ]中用||(最常用)⭐
两个[ ]之间用||:
if [ 条件1 ] || [ 条件2 ]; then echo "任一满足就执行" fi例子:
if [ "$a" = "yes" ] || [ "$b" = "ok" ]; then echo "满足其一" fi # 数值比较 if [ "$num" -lt 10 ] || [ "$num" -gt 100 ]; then echo "小于10 或 大于100" fi二、[ ]中用-o(老写法)
在一个[ ]内用-o表示 or:
if [ "$a" = "yes" -o "$b" = "ok" ]; then echo "满足其一" fi
-o已不推荐(POSIX 标记为过时、复杂条件易出错),建议用||。
三、[[ ]]中用||(Bash 推荐)⭐
Bash 里用双中括号[[ ]],更安全、可在内部直接用||:
if [[ "$a" = "yes" || "$b" = "ok" ]]; then echo "满足其一" fi
[[ ]]是 bash/zsh 扩展,支持||、&&、模式匹配,推荐用它。
四、(( ))中做数值判断
纯数值比较可用(( )),里面用||:
if (( num < 10 || num > 100 )); then echo "满足其一" fi五、字符串多值匹配(顺带)
如果是"变量等于多个值之一",用[[ ]]或case更简洁:
# 方式1 if [[ "$x" = "a" || "$x" = "b" || "$x" = "c" ]]; then ... # 方式2:case(多值时更清晰) case "$x" in a|b|c) echo "匹配 a/b/c";; esac常见易错点 ⚠️
变量加双引号:防止空值/空格报错
if [ "$a" = "yes" ] || [ "$b" = "ok" ]; then # ✅[ ]内两侧要有空格:[ "$a" = "yes" ] # ✅ 中括号内侧有空格 ["$a"="yes"] # ❌ 报错||是连接两个[ ],不是放进一个里:if [ "$a" = "1" ] || [ "$b" = "2" ]; then # ✅ if [ "$a" = "1" || "$b" = "2" ]; then # ❌ 单 [ ] 里不能用 ||(单
[ ]里要 or 得用-o;||只能用在[ ]之间或[[ ]]内部)
完整示例
#!/bin/bash read -p "输入内容: " x if [[ "$x" = "start" || "$x" = "run" ]]; then echo "开始执行..." else echo "未匹配" fi一句话总结
- 最推荐:
if [[ 条件1 || 条件2 ]]; then(Bash,||写在双括号内) - 通用/POSIX:
if [ 条件1 ] || [ 条件2 ]; then(||连接两个单括号) - 数值:
if (( a<10 || b>100 )); then - 记住:单个
[ ]里面用-o,多个[ ]之间或[[ ]]里面用||。