Shell编程高级篇之条件判断

请坐!

    • 条件判断种类
      • 根据文件类型进行判断
      • 按照文件权限进行判断
      • 俩个文件之间的比较判断
      • 两个整数之间的比较判断
      • 字符串的判断
      • 多重条件判断

条件判断种类

  1. 根据文件类型进行判断
  2. 按照文件权限进行判断
  3. 俩个文件之间的比较判断
  4. 两个整数之间的比较判断
  5. 字符串的判断
  6. 多重条件判断

根据文件类型进行判断

Shell编程高级篇之条件判断_第1张图片
使用 [ ] 括号来进行判断,利用 $? 来检测判断结果

[root@localhost ~]# [ -e /tmp ] && echo yes || echo no
yes
[root@localhost ~]# [ -e /tmpe ] && echo yes || echo no
no

#注意 [ ] 中内容和括号之间有空格,我们结合之前所学的 && 和 || 实现

按照文件权限进行判断

Shell编程高级篇之条件判断_第2张图片

[root@lx102 ~]# ll
总用量 12
-rw-------. 1 root root 1289 424 02:50 anaconda-ks.cfg
-rw-r--r--  1 root root   84 511 22:43 a.txt
-rw-r--r--  1 root root  583 512 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

两个整数之间的比较判断

Shell编程高级篇之条件判断_第3张图片

[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 变量不为空,则为真,加入!后,判断取反,所以变量为空才是真
注意:! 和 判断条件之间有个空格~~~

你可能感兴趣的:(Shell高级篇)