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地址是否合法

 

 
posted @ 2022-04-24 13:31  gg888666  阅读(93)  评论(0编辑  收藏  举报