字符串比较主要有等于,不等于,大于,小于和是否为空等测试。字符串测试符如下所示:
| 字符串测试 | 说明 |
|---|---|
| -z “string” | 字符串string为空时返回真,否则为假 |
| -n “string” | 字符串string非空时返回真,否则为假 |
| “string1” = “string2” | 字符串string1和string2相同时返回真,否则为假 |
| “string1” != “string2” | 字符串string1和string2不相同时返回真,否则为假 |
| “string1” > “string2” | 按照字典排序,字符串string1排在string2之前返回真,否则为假 |
| “string1” < “string2” | 按照字典排序,字符串string1排在string2之后返回真,否则为假 |
用例1:测试str是否为空
[root@node1 ~]# str=""
[root@node1 ~]# test -z "$str"
[root@node1 ~]# echo $?
0
[root@node1 ~]# test -n "$str"
[root@node1 ~]# echo $?
1
用例2:比较str1和str2是否相同
[root@node1 ~]# str1=""
[root@node1 ~]# str2="hello"
[root@node1 ~]# [ "$str1" = "$str2" ]
[root@node1 ~]# echo $?
1
[root@node1 ~]# [ "$str1" != "$str2" ]
[root@node1 ~]# echo $?
0
用例2:比较str1和str2的大小,注意>和<号需要转义
[root@node1 ~]# str1="abc"
[root@node1 ~]# str2="hello"
[root@node1 ~]# [ "$str1" < "$str2" ]
-bash: hello: No such file or directory
[root@node1 ~]# [ "$str1" \< "$str2" ]
[root@node1 ~]# echo $?
0
[root@node1 ~]# [ "$str1" \> "$str2" ]
[root@node1 ~]# echo $?
1
本文介绍了字符串在Shell中的比较操作,包括空字符串检查、相等性、不相等性以及字典顺序比较。通过实例展示了如何使用-z、-n以及比较运算符进行测试,并解释了在实际使用中需要注意的转义字符问题。
206

被折叠的 条评论
为什么被折叠?



