Shell编程——条件判断

1.按照文件类型进行判断

测试选项作用
-b 文件判断该文件是否存在,并且是否为块设备文件(是块设备文件为真)
-c 文件判断该文件是否存在,并且是否为字符设备文件(是字符设备文件为真)
-d 文件判断该文件是否存在,并且是否为目录文件
-e 文件判断该文件是否存在(存在为真)
-f 文件判断该文件是否存在,并且是否为普通文件(是普通文件为真)
-L 文件判断该文件是否存在,并且是否为符号链接文件(是符号链接文件为真)
-p 文件判断该文件是否存在,并且是否为管道文件
-s 文件判断该文件是否存在,并且是否为非空
-S 文件判断该文件是否存在,并且是否为套接字文件(是套接字文件为真)

两种判断格式:

[cfp@bogon ~]$ test -e /root/install.log
[cfp@bogon ~]$ [ -e /root/install.log ] #这种形式比较常见

实例:

[cfp@bogon ~]$ test -e ./text/a.txt
[cfp@bogon ~]$ echo $?
0  #上一条命令返回值是正确的,说明文件存在
[cfp@bogon ~]$ [ -e ./text/a.txt ]   #另一种形式
[cfp@bogon ~]$ echo $?
0  
[cfp@bogon ~]$ test -e ./text/a.txu
[cfp@bogon ~]$ echo $?
1  #上一条命令返回值是错误的,说明文件不存在

[cfp@bogon ~]$ [ -e ./text/a.txt ] && echo yes || echo no
yes
# 第一个判断命令如果正确执行,则打印“ yes ”,否则打 印“ no ”  
#这样写的好处是可以直接判断命令的对错,不用再用“echo $?”来看命令是否正确。

2.按照文件权限进行判断

测试选项作用
-r 文件判断该文件是否存在,并且是否该文件拥有读权限(有读权限为真)
-w 文件判断该文件是否存在,并且是否该文件拥有写权限(有写权限为真)
-x文件判断该文件是否存在,并且是否该文件拥有执行权限(有执行权限为真)
-u 文件判断该文件是否存在,并且是否该文件拥有SUID权限(有 SUID权限为真)
-g文件判断该文件是否存在,并且是否该文件拥有SGID权限(有 SGID权限为真)
-k文件判断该文件是否存在,并且是否该文件拥有SBit权限(有 SBit权限为真)
[cfp@bogon ~]$ [ -w ./text/a.txt ] && echo yes || echo no
yes    
#判断文件是否有写的权限

3.两个文件之间进行比较

测试选项作用
文件1 -nt 文件2判断文件1的修改时间是否比文件2的新(如果新则为真)
文件1 -ot 文件2判断文件1的修改时间是否比文件2的旧
文件1 -ef 文件2判断文件1是否和文件2的Inode号一致,可以理解为两个 文件是否为同一个文件。这个判断用于判断硬链接是很好的方法
[cfp@bogon ~]$ ln ./text/a.txt ./text/c.txt   
#建立硬链接,硬链接的文件,文件的Inode号是一样的
[cfp@bogon ~]$ [ ./text/a.txt -ef ./text/c.txt ] && echo yes || echo no
yes

4.两个整数之间的比较

测试选项作用
整数1 -eq 整数 2判断整数1是否和整数2相等(相等为真)
整数1 -ne 整数 2判断整数1是否和整数2不相等(不相等为真)
整数1 -gt 整数 2判断整数1是否大于整数2(大于为真)
整数1 -lt 整数 2判断整数1是否小于整数2(小于位置)
整数1 -ge 整数 2判断整数1是否大于等于整数2(大于等于为真)
整数1 -le 整数 2判断整数1是否小于等于整数2(小于等于为真)
[cfp@bogon ~]$ [ 22 -ge 22 ] && echo yes ||echo no
yes
# 判断 22 是否大于等于 22 ,当然是了
 
[cfp@bogon ~]$ [ 23 -le 22 ] && echo yes || echo no
no
# 判断 23 是否小于等于 22 ,当然不是了

5.字符串的判断

测试选项作用
-z 字符串判断字符串是否为空(为空返回真)
-n 字符串判断字符串是否为非空(非空返回真)
字符串1==字符串2判断字符串1是否和字符串2相等(相等返回真)
字符串1!=字符串2判断字符串1是否和字符串2不相等(不相等返回真)
[cfp@bogon ~]$ name=sc
[cfp@bogon ~]$ [ -z "$name" ] && echo yes || echo no
no
# 判断 name 变量是否为空,因为不为空,所以返回 no 
[cfp@bogon ~]$ aa=11
[cfp@bogon ~]$ bb=22
# 给变量 aa 和变量 bb 赋值
[cfp@bogon ~]$ [ "$aa" == "bb" ] && echo yes || echo no
no
# 判断两个变量的值是否相等,明显不相等 ,所以返回no

6.多重条件判断

测试选项作用
判断1 -a 判断2逻辑与,判断1和判断2都成立,最终的结果才为真
判断1 -o 判断2逻辑或,判断1和判断2有一个成立,最终的结果就为真
!判断逻辑非,使原始的判断式取反
[cfp@bogon ~]$ aa=21
[cfp@bogon ~]$ [ -n "$aa" -a $aa -gt 23 ] && echo yes || echo no
# 判断变量 aa 是否有值,同时判断变量 aa 的是否大于 23 
no
# 因为变量 aa 的值不大于 23 ,所以虽然第一个判断值为真, 返回的结果也是假
[cfp@bogon ~]$ aa=24
[cfp@bogon ~]$ [ -n "$aa" -a $aa -gt 23 ] && echo yes || echo no
yes
[cfp@bogon ~]$ aa=""   
#字符串aa为空
[cfp@bogon ~]$ [ -n "$aa" -a 24 -gt 21 ] && echo yes || echo no
no
# 因为变量aa的值为空 ,所以虽然第二个判断值为真, 返回的结果也是假

7. 总结

  文章总结了几种常见的条件判断。如果你有编程语言基础的话,这些应该是很简单的。如果没有编程基础,也不会太难,就是几种常见的格式,熟悉了就可以。
     在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值