31、条件判断

来源:互联网 发布:头发怎么保养 知乎 编辑:程序博客网 时间:2024/05/22 13:08

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'            //是否是目录

[ - /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 !:非