bash之判断类型

1.4.3.1判断类型

 

算术判断

注意一点:[ ]中左边 “[” 必须要有空格,然后再到比较值,后边的比较值也要有空格再到 “]”

-eq 表示 判断是否相等 ,示例如下

[ 2 –eq 2 ] ; echo $?

输出:0

[ 2 –ne 2 ] 表示不等

[ 3 –gt 1 ] 表示 ⼤于

[ 3 –ge 3 ] 表示 ⼤于等于

[ 3 –lt 4 ] 表示 ⼩于

[ 3 –le 3 ] 表示 ⼩于等于

(())也可以表⽰算术⽐较。((10>=8)) ,((10==10))

 

 

字符串判断

 

 

❖[ string1 = string2 ] 如果两字符串相同,则结果为真

a="xiaoyu"

b="hello xiaoyu"

[ "$a" = "$b" ];echo $?

输出:0

 

❖ [ string1 != string2 ] 如果两字符串不相同,则结果为真

 

❖ [ -n "$var" ] 如果字符串不是空,则结果为真

示例:[ -n "$b" ];echo $? 输出:0

 

❖ [ -z "$var" ] 如果字符串是空,则结果为真

 

❖ [[ "xxxx" == x* ]] 在表达式中表⽰0或者多个字符

示例:[[ "$b" == h* ]];echo $? 表示b是以h开头的字符

 

❖ [[ xxx == x?? ]] 在表达式中表⽰单个字符

在引⽤变量的时候要记得加双引号[ -z "$a"] 否则当a未定义时会语法报错

 

 

逻辑判断

-a 表示逻辑与

[ 2 -ge 1 -a 3 -ge 4 ];echo $?

 

&& 表示逻辑与(拓展语法中,就是双括号)

[[ 2 -ge 1 && 3 -ge 4 ]];echo $?

 

-o 表示逻辑或

[ 2 -ge 1 -o 3 -ge 4 ];echo $?

 

|| 表示逻辑或(拓展语法中,就是双括号)

[[ 2 -ge 1 || 3 -ge 4 ]];echo $?

 

表示逻辑⾮

[ ! 2 -ge 1 ];echo $?

 

内置判断

 

❖ -e fifile 如果⽂件存在,则结果为真

示例:[ -e "10.wx" ]; echo $? 输出:0 (因为我当前目录存在文件10.wx)

❖ -d fifile 如果⽂件是⼀个⼦⽬录,则结果为真

❖ -f fifile 如果⽂件是⼀个普通⽂件,则结果为真

❖ -r fifile 如果⽂件可读,则结果为真

❖ -s fifile 如果⽂件的长度不为0,则结果为真

❖ -w fifile 如果⽂件可写,则结果为真

❖ -x fifile 如果⽂件可执⾏,则结果为真

❖ [[]]是[]的扩展语法,在⽼的sh⾥并不⽀持。推荐⽤[]

posted @ 2019-07-09 20:54  旧时光里的小鱼儿  阅读(583)  评论(0编辑  收藏  举报