在 Shell 脚本(如 Bash)中,进行数字比较时有不同的表示方法,主要有两种语法风格:

  • [ ] 形式(也叫 test 命令)
  • [[ ]] 形式(增强型条件判断,Bash 特有)

1. 数值比较(整数)

比较符号[ ] 语法[[ ]] 语法说明
大于-gt>greater than
大于等于无内置,需组合条件或用 (( ))>=greater or equal
小于-lt<less than
小于等于无内置,需组合条件或用 (( ))<=less or equal
等于-eq==equal
不等于-ne!=not equal

2. 例子

使用 [ ]

a=5
b=10

if [ "$a" -gt "$b" ]; then
  echo "a 大于 b"
fi

if [ "$a" -lt "$b" ]; then
  echo "a 小于 b"
fi

if [ "$a" -eq "$b" ]; then
  echo "a 等于 b"
fi

if [ "$a" -ne "$b" ]; then
  echo "a 不等于 b"
fi

注意:[ ] 中比较运算符是 -gt-lt-eq 等,且符号两边要有空格。


使用 [[ ]]

a=5
b=10

if [[ $a -gt $b ]]; then
  echo "a 大于 b"
fi

if [[ $a -lt $b ]]; then
  echo "a 小于 b"
fi

if [[ $a -eq $b ]]; then
  echo "a 等于 b"
fi

if [[ $a -ne $b ]]; then
  echo "a 不等于 b"
fi

[[ ]] 支持使用标准比较符号 <><=>=,但要注意:

  • 整数比较推荐用 (( )) 或 [ ] 中的 -gt-lt 等。
  • 在 [[ ]] 中,> 和 < 是字符串比较符号,如果比较数字,推荐用 -gt 等。

使用 (( ))(算术表达式)

(( )) 结构中可以直接使用常规的数学比较符号,适合整数比较:

a=5
b=10

if (( a > b )); then
  echo "a 大于 b"
fi

if (( a >= b )); then
  echo "a 大于等于 b"
fi

if (( a < b )); then
  echo "a 小于 b"
fi

if (( a <= b )); then
  echo "a 小于等于 b"
fi

if (( a == b )); then
  echo "a 等于 b"
fi

if (( a != b )); then
  echo "a 不等于 b"
fi

3. 字符串比较符号(补充)

符号说明用法示例
=字符串相等[ "$a" = "$b" ]
!=字符串不等[ "$a" != "$b" ]
<字符串小于(按ASCII)[[ "$a" < "$b" ]]
>字符串大于[[ "$a" > "$b" ]]

总结

操作[ ][[ ]](( ))
大于-gt-gt 或 <(字符串比较)>
大于等于无(组合或用(( ))>=>=
小于-lt-lt 或 >(字符串比较)<
小于等于无(组合或用(( ))<=<=
等于-eq====
不等于-ne!=!=