06.Shell条件测试与判断

目标———识别各种状态、参数

脚本的智能化?
使Shell脚本获得识别能力?
为脚本语句执行提供必要的识别依据
    	文件或目录的读/写等状态
    	数值的大小
    	字符串是否匹配
    	多条件组合

条件测试命令
语法格式
    test 选项 参数
    [ 选项 参数 ]
命令help test 可以查询帮助

1.文件状态测试

[ 操作符 文件或目录 ]
操作符                  含义
-e          判断对象是否存在(Exist),若存在则结果为真
-d          判断对象是否为目录(Directory),是则为真
-f          判断对象是否为一般文件(File),是则为真
-r          判断对象是否有可读(Read)权限,是则为真
-w          判断对象是否有可写(Write)权限,是则为真
-x          判断对象是否有可执行(eXecute)权限,是则为真
$ [ -d /etc/hosts ]
$ echo $?
1       #目录/etc/hosts不存在,测试不成功
$ [ -d /etc/vsftpd ]
$ echo $?
0       #目录/etc/vsftpd存在,测试成功
//等效简化
$ [ -d /etc/vsftpd ] && echo "YES"
YES

2.整数值比较

[ 整数值1 操作符 整数值2 ]
操作符                      含义
-eq             等于(Equal)
-ne             不等于(Not Equal)
-ge             大于或等于(Greater or Equal)
-le             小于或等于(Lesser or Equal)
-gt             大于(Greater Than)
-lt             小于(Lesser Than)

识别登录的用户数,是否不超过5

$ who | wc -l
2
$ [ $(who | wc -l) -le 5 ] && echo "OK"
OK

3.字符串比较

[ 字符串1 操作符 字符串2 ]
操作符          含义
==          两个字符串相同
!=          两个字符串不相同
[ 操作符 字符串 ]
操作符          含义
-z          字符串的值为空
-n          字符串的值不为空(相当于! -z)
$ [$USER=="root"]&&echo "超级用户"
超级用户
$ [$PWD!="/"] && pwd 
/root
$ [ -z "" ] && echo YES || echo NO
YES
$ [ -z " " ] && echo YES || echo NO
NO

4.多条件组合

[条件1] 操作符 [条件2]
操作符                  含义
&&          给定条件必须都成立,整个测试结果才为真
||          只要其中一个条件成立,则整个测试结果为真

当前用户为root,且位于/root目录下

$ [ $USER=="root"] && [$PWD=="/root"]
$ [$? -eq 0] && echo YES
YES

当/opt/tdir目录不存在时,创建该目录

$ [ -d "/opt/testdir" ] || mkdir -p /opt/testdir
$ ls -ld /opt/testdir/
drwxr-xr-x 2 root root 4096 12-03 18:13 /opt/testdir/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值