首页 / Linux 命令行入门教程 / 86. 比较与逻辑运算

Linux 命令行入门教程

86. 比较与逻辑运算

本教程共 90 篇 · 第 86 篇

86. 比较与逻辑运算

上一章讲了 if 和条件框架,这章填进去”比什么、怎么连”。记住:数字和字符串的比较符号不一样。

数字比较

数字用 -eq -ne -gt -lt -ge -le,别用 =>

运算符含义
-eq等于(equal)
-ne不等于(not equal)
-gt大于(greater than)
-lt小于(less than)
-ge大于等于
-le小于等于
if [ "$age" -ge 18 ]; then
  echo "已成年"
fi

字符串比较

字符串用 =!=,判断空用 -z / -n

if [ "$name" = "小明" ]; then
  echo "找到小明"
fi
if [ -z "$name" ]; then
  echo "名字为空"
fi
Note

[[ ]] 里字符串相等也能写 ==,但为了和数字的 -eq 区分,建议字符串统一用 =

文件测试

判断文件属性最常用,搭配 if

运算符含义
-e文件存在
-f是普通文件
-d是目录
-r / -w / -x可读 / 可写 / 可执行
-s存在且非空

逻辑运算

把多个条件连起来,用 &&(且)和 ||(或)。在 [ ] 里写法是 -a / -o,但更推荐用外层连接:

# 且:两个条件都成立
[ "$age" -ge 18 ] && [ "$age" -le 60 ]

# 或:任一成立
[ "$role" = "admin" ] || [ "$role" = "root" ]

# 取反
! [ -f "$file" ]

组合进 if

if [ "$age" -ge 18 ] && [ "$age" -le 60 ]; then
  echo "适龄"
fi

[[ ]] 里还能直接写 && / ||,不用拆两条:

if [[ "$age" -ge 18 && "$age" -le 60 ]]; then
  echo "适龄"
fi

小结:数字用 -eq/-gt 那套,字符串用 =/!=,文件用 -f/-d。多个条件用 &&/|| 串联,逻辑就清楚了。