在 Linux Shell(特别是 Bash)中,-eq 是一个用于整数比较的测试运算符。
基本用途
-eq 用于判断两个整数是否相等。
- 如果相等,返回退出状态码
0(表示“真”/成功)。 - 如果不相等,返回退出状态码
1(表示“假”/失败)。
语法格式
✅ 推荐方式:使用 [[ ... ]] 或 [ ... ]
if [ $a -eq $b ]; then
echo "a 等于 b"
fi
或更现代的写法(Bash 推荐):
if [[ $a -eq $b ]]; then
echo "a 等于 b"
fi
❌ 不推荐:使用 算术上下文
在 中,直接使用 或 ,而不是 -eq:
if (( a == b )); then
echo "a 等于 b"
fi
重要注意事项
⚠️ -eq 仅用于整数
-eq 只能比较整数,如果尝试比较浮点数(如 14),会报错:
$ [ 3.14 -eq 3.14 ] bash: [: 3.14: integer expression expected
⚠️ 变量必须正确引用
如果变量可能为空,务必使用双引号包裹变量,避免语法错误:
# $a 为空,[ -eq 5 ] 会报错 [ "$a" -eq 5 ] # ✅ 安全写法
⚠️ 与 的区别
-eq:用于整数相等比较。- 用于字符串相等比较(在
[ ]或[[ ]]中)。[ "hello" == "hello" ] # ✅ 字符串比较 [ 5 -eq 5 ] # ✅ 整数比较
其他常用整数比较运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
-eq |
等于 | [ $a -eq $b ] |
-ne |
不等于 | [ $a -ne $b ] |
-gt |
大于 | [ $a -gt $b ] |
-ge |
大于等于 | [ $a -ge $b ] |
-lt |
小于 | [ $a -lt $b ] |
-le |
小于等于 | [ $a -le $b ] |
完整示例
#!/bin/bash
num1=10
num2=20
if [ $num1 -eq $num2 ]; then
echo "num1 等于 num2"
else
echo "num1 不等于 num2"
fi
# 输出: num1 不等于 num2
- 使用
-eq进行整数相等比较。 - 始终在变量周围加双引号以处理空值。
- 对于浮点数,请使用
bc、awk或 配合浮点运算。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/487433.html



