Shell if 中的“或“关系(任一满足即执行)
2026/7/8 2:29:24 网站建设 项目流程

核心:用||(或)连接两个条件。根据你用的判断方式有几种写法。

一、[ ]中用||(最常用)⭐

两个[ ]之间用||

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

常见易错点 ⚠️

  1. 变量加双引号:防止空值/空格报错

    if [ "$a" = "yes" ] || [ "$b" = "ok" ]; then # ✅
  2. [ ]内两侧要有空格

    [ "$a" = "yes" ] # ✅ 中括号内侧有空格 ["$a"="yes"] # ❌ 报错
  3. ||是连接两个[ ],不是放进一个里

    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,||写在双括号内)
  • 通用/POSIXif [ 条件1 ] || [ 条件2 ]; then||连接两个单括号)
  • 数值if (( a<10 || b>100 )); then
  • 记住:单个[ ]里面用-o,多个[ ]之间或[[ ]]里面用||

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询