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" ]

caution 注意在=前后要加上空格

if [ "$a"="$b" ] 和上面不等价。

==

等于

if [ "$a" == "$b" ]

= 同义

note == 运算符在 双方括号 和单方括号里表现不同。

!=

不等于

if [ "$a" != "$b" ]

[[ ... ]] 结构中会进行模式匹配。

<

小于,按照 ASCII码 排序。

if [[ "$a" < "$b" ]]

if [ "$a" \< "$b" ]

注意在 [] 结构里 < 需要被 转义

>

大于,按照 ASCII 码排序。

if [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ]

注意在 [] 结构里 > 需要被转义。

样例 27-11 包含了比较运算符。

-z

字符串为空,即字符串长度为0。

-n

字符串非空(null)。

caution 使用 -n 时字符串必须是在括号中且被引用的。使用 ! -z 判断未引用的字符串或者直接判断(样例 7-6)通常可行,但是非常危险。判断字符串时一定要引用。

样例 7-5. 算术比较和字符串比较

样例 7-6. 测试字符串是否为空(null

样例 7-7. zmore

复合比较

-a

逻辑与

exp1 -a exp2 返回真当且仅当 exp1exp2 均为真。

-o

逻辑或

如果 exp1exp2 为真,则 exp1 -o exp2 返回真。

以上两个操作和 双方括号 结构中的 Bash 比较运算符号 &&|| 类似。

测试操作 -o-a 可以在 test 命令或在测试括号中进行。

caution rihad 指出:

复合比较操作的例子可以参考 样例 8-3样例 27-17样例 A-29

最后更新于

这有帮助吗?