条件判断种类
- 根据文件类型进行判断
- 按照文件权限进行判断
- 俩个文件之间的比较判断
- 两个整数之间的比较判断
- 字符串的判断
- 多重条件判断
根据文件类型进行判断
使用 [ ] 括号来进行判断,利用 $? 来检测判断结果
[root@localhost ~]# [ -e /tmp ] && echo yes || echo no
yes
[root@localhost ~]# [ -e /tmpe ] && echo yes || echo no
no
#注意 [ ] 中内容和括号之间有空格,我们结合之前所学的 && 和 || 实现
按照文件权限进行判断
[root@lx102 ~]# ll
总用量 12
-rw-------. 1 root root 1289 4月 24 02:50 anaconda-ks.cfg
-rw-r--r-- 1 root root 84 5月 11 22:43 a.txt
-rw-r--r-- 1 root root 583 5月 12 12:29 file.sh
[root@lx102 ~]# [ -r anaconda-ks.cfg ] && echo yes || echo no
yes
[root@lx102 ~]# [ -w anaconda-ks.cfg ] && echo yes || echo no
yes
[root@lx102 ~]# [ -x anaconda-ks.cfg ] && echo yes || echo no
no
俩个文件之间的比较判断
[root@localhost ~]# ln xo.txt /tmp/
[root@localhost ~]#
[root@localhost ~]# [ /root/xo.txt -ef /tmp/xo.txt ] && echo yes || echo no
yes
两个整数之间的比较判断
[root@localhost ~]# [ 11 -ge 22 ] && echo yes || echo no
no
[root@localhost ~]#
[root@localhost ~]# [ 22 -ge 11 ] && echo yes || echo no
yes
字符串的判断
[root@localhost ~]# name=shanchuan
[root@localhost ~]# age=""
[root@localhost ~]# unset sex
[root@localhost ~]#
[root@localhost ~]# [ -z "$name" ] && echo yes || echo no
no
[root@localhost ~]#
[root@localhost ~]# [ -z "$age" ] && echo yes || echo no
yes
[root@localhost ~]#
[root@localhost ~]# [ -z "$sex" ] && echo yes || echo no
yes
#字符为空和没有赋值都为空
[root@localhost ~]# a=123
[root@localhost ~]# b=456
[root@localhost ~]#
[root@localhost ~]# [ "$a" == "$b" ] && echo yes || echo no
no
多重条件判断
测试:逻辑与
[root@localhost ~]# a=100
[root@localhost ~]# [ -n "$a" -a "$a" -gt 150 ] && echo yes || echo no
no
[root@localhost ~]#
[root@localhost ~]# a=200
[root@localhost ~]# [ -n "$a" -a "$a" -gt 150 ] && echo yes || echo no
yes
逻辑非
[root@localhost ~]# a=100
[root@localhost ~]# [ -n "$a" ] && echo yes || echo no
yes
[root@localhost ~]#
[root@localhost ~]# [ ! -n "$a" ] && echo yes || echo no
no
-n 变量不为空,则为真,加入!后,判断取反,所以变量为空才是真
注意:! 和 判断条件之间有个空格~~~