31、条件判断
1、条件判断
-b:判断文集爱你是否存在,并且是否为块设备文件,是块设备文件为真
-c:判断文件是否存在,并且是否为字符设备文件,是字符设备文件为真
-d:判断该文件是否存在,并且是否为目录,目录为真
-e:判断文件是否存在,存在为真
-f:判断文件是否存在,并且是否为文件,文件为真
-L:判断文件是否存在,并且为符号链接文件,符号链接文件为真
-p:判断文件是否存在,并且是否为管道文件,管道文件为真
-s:判断该文件是否存在,并且是否为空,不为空真
-S:判断文件是否存在,并且是否为套接字文件,套接字文件为真
1.1 方法一:
test -e test.txt
echo $? //0正确
1.2 方法二:
[ -e test.txt ]
echo $? //0正确
1.3 方法三 :
[ -d /root ] && echo 'yes' || echo 'no'
[ -f /root/test.txt ] && echo 'yes' || echo 'no'//是否是文件
[ -w /root/test.txt ] && echo 'yes' || echo 'no' //是否有写权限,所有者所属组其他人只有有一个有写权限,就会yes
[ -r /root/test.txt ] && echo 'yes' || echo 'no' //是否有读权限,所有者所属组其他人只有有一个有读权限,就会yes
[ -x /root/test.txt ] && echo 'yes' || echo 'no' //是否有执行权限,所有者所属组其他人只有有一个有执行权限,就会yes
2、两个文件相比较
2.1 文件一 -nt 文件二 :一比二新,为真
2.2 文件一 -ot 文件 二: 一比二旧,为真
2.3 文件一 -et 文件二 : 判断文件一与文件二的inode号是否一致,可以理解为两个文件是否为同一文件。这个判断等于判断硬链接是个很好的方法,
硬链接与原文件inode相同
例子:[ test -nt test.sh ] && echo 'yes' || echo 'no'
3、两个数值相比较
3.1 数值1 -eq 数值2:数值1与数值2相等,为真
3.1 数值1 -ne 数值2:数值1与数值2不相等,为真
3.1 数值1 -gt 数值2:数值1大于数值2,为真
3.1 数值1 -lt 数值2:数值1小于数值2,为真
3.1 数值1 -ge 数值2:数值1大于等于数值2,为真
3.1 数值1 -le 数值2:数值1小于等于数值2,为真
例子:[ 23 -gt 22 ] && echo 'yes' || echo 'no'
4、字符串比较
4.1 -z 字符串:字符串为空,为真
4.2 -n 字符串:字符串不为空,为真
4.3 字符串1 == 字符串2 :两个字符串相等,为真
4.4 字符串1 != 字符串2:两个字符串不相等,为真
例子:[ -z "$name" ] && echo 'yes' || echo 'no' //$name中如果有值就yes否则就no
5、多重条件判断
5.1 条件一 -a 条件二:两个都为真,为真
5.2 条件一 -o 条件二:有一个为真,为真
5.3 !:非