在 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 | != | != |
发表回复