整数比较运算符仅是对数字的操作,不能将数字与字符串、文件等内容一起操作,而且不能想当然地使用日常生活中的等号、大于号、小于号等来判断。因为等号与赋值命令符冲突,大于号和小于号分别与输出重定向命令符和输入重定向命令符冲突。因此一定要使用规范的整数比较运算符来进行操作。可用的整数比较运算符如表4-4所示。
表4-4 可用的整数比较运算符
操作符 | 作用 |
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否等于或小于 |
-ge | 是否大于或等于 |
接下来小试牛刀。我们先测试一下10是否大于10以及10是否等于10(通过输出的返回值内容来判断):
[root@linuxprobe ~]# [ 10 -gt 10 ][root@linuxprobe ~]# echo $?1[root@linuxprobe ~]# [ 10 -eq 10 ][root@linuxprobe ~]# echo $?0
字符串比较语句用于判断测试字符串是否为空值,或两个字符串是否相同。它经常用来判断某个变量是否未被定义(即内容为空值),理解起来也比较简单。字符串比较中常见的运算符如表4-5所示。
表4-5 常见的字符串比较运算符
操作符 | 作用 |
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否不同 |
-z | 判断字符串内容是否为空 |
接下来通过判断String变量是否为空值,进而判断是否定义了这个变量:
[root@linuxprobe ~]# [ -z $String ][root@linuxprobe ~]# echo $?0