shell-条件测试-字符串测试
一,条件测试
1, 数值测试
[root@rocky ~]# ##[ $a -gt $b ] [root@rocky ~]# [ $A -gt $b ] [root@rocky ~]# [ $a -gt $b ] [root@rocky ~]# echo $? 1
注意:[ ]中间必须有空格否则会报错!
2,算数式比较
== != <= >= < >
[root@rocky ~]# (( x == y )) [root@rocky ~]# echo $? 1
[root@rocky ~]# (( x!=20 )) [root@rocky ~]# echo $? 0
[root@rocky ~]# (( x<y )) [root@rocky ~]# echo $? 0 [root@rocky ~]# (( x>y )) [root@rocky ~]# echo $? 1
二 字符串测试
-z STRING 字符串是否为空,没定义或空为真,不空为假
-n STRING 字符串是否不空,不空为真,空为假
STRING1 = STRING2 是否等于,注意 = 前后有空格
STRING1 != STRING2 是否不等于
> Ascii码是否大于ascii码
< 是否小于
例:使用[ ]
使用正则表达式的时候或通配符使用[[ ]],一般情况使用[]
[root@rocky ~]# unset str [root@rocky ~]# [ -z "$str"] [root@rocky ~]# echo $? #空为真 0
[root@rocky ~]# str="" [root@rocky ~]# [ -z "$str" ] [root@rocky ~]# echo $? 0
[root@rocky ~]# str=" " [root@rocky ~]# [ -z "$str" ] #不为空为假 [root@rocky ~]# echo $? 1
[root@rocky ~]# str="aaa" [root@rocky ~]# [ -z "$str" ] [root@rocky ~]# echo $? 1
例: 使用到通配符或正则表达式时使用[[ ]]判断文件后缀
通配符
[root@rocky ~]# file=test.log [root@rocky ~]# [[ "$file" == *.log ]] [root@rocky ~]# echo $? 0
[root@rocky ~]# [[ "$file" == *.txt ]] [root@rocky ~]# echo $? 1 [root@rocky ~]# [[ "$file" != *.txt ]] [root@rocky ~]# echo $? 0
正则表达式
[root@rocky ~]# [[ "$file" =~ \.log$ ]] [root@rocky ~]# echo $? 0 [root@rocky ~]# [[ "$file" =~ \.txt$ ]] [root@rocky ~]# echo $? 1
判断是否为合法的非负整数
n=12
[root@rocky ~]# [[ "$n" =~ ^[0-9]+ ]] [root@rocky ~]# echo $? 0 [root@rocky ~]# n=chuan12 [root@rocky ~]# [[ "$n" =~ ^[0-9]+ ]] [root@rocky ~]# echo $? 1
判断IP地址是否合法