Shell基础(七)条件判断

按照文件类型进行判断

测试选项

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

实例

  • 判断文件是否存在
[root@localhost ~]# test -e test.txt 
[root@localhost ~]# echo $?
0
#返回值为0,说明存在
  • 用"[]"代替test命令,一般使用中使用中括号,因为if命令不识别test命令
[root@localhost ~]# [ -e test.txt ]
[root@localhost ~]# echo $?
0
  • 使用echo直接输出真假
[root@localhost ~]# [ -e test.txt ] && echo yes || echo no
yes
[root@localhost ~]# [ -e test.tx ] && echo yes || echo no
no

按照文件权限进行判断

测试选项

测试选项作用
-r判断该文件是否存在,并且是否具有读权限。
-w判断该文件是否存在,并且是否具有写权限。
-x判断该文件是否存在,并且是否具有执行权限。
-u判断该文件是否存在,并且是否具有SUID权限。
-g判断该文件是否存在,并且是否具有SGID权限。
-k判断该文件是否存在,并且是否具有SBit权限。

实例

  • 判断文件是否有读权限
[root@localhost ~]# [ -r mail ] && echo yes || echo no
yes
  • 判断文件是否有SUID权限
[root@localhost ~]# [ -u mail ] && echo yes || echo no
no

两个文件之间进行比较

测试选项

测试选项作用
文件1 -nt 文件2判断文件1的修改时间是否比文件2的新。
文件1 -ot 文件2判断文件1的修改时间是否比文件2的旧。
文件1 -ef 文件2判断文件1是否和文件2的Inode号一致,可以用来判断硬链接。

实例

  • 判断两个文件之间的新旧
[root@localhost ~]# [ mail -nt test.txt ] && echo yes || echo no
no
[root@localhost ~]# [ mail -ot test.txt ] && echo yes || echo no
yes
  • 判断两个文件是否是硬链接
[root@localhost ~]# ln mail mail2
[root@localhost ~]# ls
anaconda-ks.cfg  mail  mail2  photo  sh  test.txt
[root@localhost ~]# [ mail -ef mail2 ] && echo yes || echo no
yes

两个整数之间比较

测试选项

测试选项作用
整数1 -eq 整数2判断相等为真
整数1 -ne 整数2判断不等为真
整数1 -gt 整数2判断大于为真
整数1 -lt 整数2判断小于为真
整数1 -ge 整数2判断大于等于为真
整数1 -le 整数2判断小于等于为真

实例

  • 判断两数是否相等
[root@localhost ~]# [ 20 -eq 21 ] && echo yes || echo no
no
  • 判断整数1是否小于整数2
[root@localhost ~]# [ 20 -lt 21 ] && echo yes || echo no
yes

字符串的判断

测试选项

测试选项作用
-z 字符串判断字符串是否为空。
-n 字符串判断字符串是否为非空。
字符串1 == 字符串2判断两个字符串是否相等,相等为真。
字符串1 != 字符串2判断两个字符串不等为真。

注:shell中"=="只能判断字符串是否相等。

实例

  • 判断是否为空。
[root@localhost ~]# wjl=""
[root@localhost ~]# [ -z "$wjl" ] && echo yes || echo no
yes

多重条件判断

测试选项

测试选项作用
判断1 -a 判断2逻辑与,判断1和判断2都成立时结果为真。
判断1 -o 判断2逻辑或,判断1和判断2有一个成立时最后的结果才为真。
!判断逻辑非,使判断结果取反。

实例

  • 当变量的值不为空且大于18时为真
[root@localhost ~]# [ -n "$wjl" -a "$wjl" -gt 18 ] && echo yes || echo no
yes

ps:尚硅谷linux视频课程学习笔记

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值