7.3 其他比较操作
二元比较操作比较变量或者数量。注意整数和字符串比较使用的是两套运算符。
整数比较
-eq
等于
if [ "$a" -eq "$b" ]
-ne
不等于
if [ "$a" -ne "$b" ]
-gt
大于
if [ "$a" -gt "$b" ]
-ge
大于等于
if [ "$a" -ge "$b" ]
-lt
小于
if [ "$a" -lt "$b" ]
-le
小于等于
if [ "$a" -le "$b" ]
<
小于(使用 双圆括号)
(("$a" < "$b"))
<=
小于等于(使用双圆括号)
(("$a" <= "$b"))
>
大于(使用双圆括号)
(("$a" > "$b"))
>=
大于等于(使用双圆括号)
(("$a" >= "$b"))
字符串比较
=
等于
if [ "$a" = "$b" ]
注意在=前后要加上空格
if [ "$a"="$b" ] 和上面不等价。
==
等于
if [ "$a" == "$b" ]
和 = 同义
== 运算符在 双方括号 和单方括号里表现不同。
!=
不等于
if [ "$a" != "$b" ]
在 [[ ... ]] 结构中会进行模式匹配。
<
小于,按照 ASCII码 排序。
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意在 [] 结构里 < 需要被 转义。
>
大于,按照 ASCII 码排序。
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意在 [] 结构里 > 需要被转义。
样例 27-11 包含了比较运算符。
-z
字符串为空,即字符串长度为0。
-n
字符串非空(null)。
使用 -n 时字符串必须是在括号中且被引用的。使用 ! -z 判断未引用的字符串或者直接判断(样例 7-6)通常可行,但是非常危险。判断字符串时一定要引用。
样例 7-5. 算术比较和字符串比较
样例 7-6. 测试字符串是否为空(null)
样例 7-7. zmore
复合比较
-a
逻辑与
exp1 -a exp2 返回真当且仅当 exp1 和 exp2 均为真。
-o
逻辑或
如果 exp1 或 exp2 为真,则 exp1 -o exp2 返回真。
以上两个操作和 双方括号 结构中的 Bash 比较运算符号 && 和 || 类似。
测试操作 -o 和 -a 可以在 test 命令或在测试括号中进行。
rihad 指出:
最后更新于
这有帮助吗?