shell条件判断

按照文件类型判断

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

判断格式

test -e /tmp/install.log  #判断文件是否存在

echo $?  #查询上一条命令是否执行正确

[ -e /tmp/install.log ] && echo "yes" || echo "no"

或者:

[ -e /tmp/install.log ]

按照文件权限判断

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

判断格式

[ -w student.txt ] && echo "yes" || echo "no"

两个文件之间的比较

测试选项作用
文件1 -nt 文件2判断文件1的修改时间是否比文件2新
(如果新则为真)
文件1 -ot 文件2判断文件1的修改时间是否比文件2的旧
(如果旧则为真)
文件1 -ef 文件2判断文件1是否和文件2的Inode号一致,
可以理解为两个 文件是否为同一个文件。
这个判断用于判断硬链接是很 好的方法

 ln /root/student.txt /tmp/stu.txt #创建硬连接

[ /root/student.txt -ef /tmp/stu.txt ] && echo "yes" || echo "no" yes 

两个整数之间的比较

测试选项作用
整数1 -eq 整数2  equal判断整数1是否和整数2相等(相等为真)
整数1 -ne 整数 2 not equal判断整数1是否和整数2不相等(不相等为真)
整数1 -gt 整数2  great than判断整数1是否大于整数2(大于为真)
整数1 -lt 整数2 less than判断整数1是否小于整数2(小于为真)
整数1 -ge 整数2 great equal判断整数1是否大于等于整数2
(大于等于为真)
整数1 -le 整数判断整数1是否小于等于整数2
(小于等于为真)

[ 23 -gt 22 ] && echo 'yes' || echo 'no'

字符串判断

测试选项作用
-z 字符串判断字符串是否为空(为空返回真)
-n 字符串判断字符串是否为非空(非空返回真)
字串1 ==字串2判断字符串1是否和字符串2相等(相等返回真)
字串1 != 字串2判断字符串1是否和字符串2不相等(不相等返回真)

name=daniel #给name变量赋值

[ -z "$name" ] && echo '为空' || echo "不为空" #判断name变量是否为空

[ -n "$name" ] && echo '非空' || echo "为空" #判断是否非空

多重条件判断

测试选项作用
判断1 -a 判断2 and逻辑与,判断1和判断2都成立,最终的结果才为真
判断1 -o 判断2 or逻辑或,判断1和判断2有一个成立,最终的结果就为真
!判断逻辑非,使原始的判断式取反

aa=11

[ -n "$aa" -a "$aa" -gt 23 ] && echo "yes" || echo "no"

##判断变量aa是否有值,同时判断变量aa的是否大于23

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值