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⾥并不⽀持。推荐⽤[]