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/
发布了21 篇原创文章 · 获赞 1 · 访问量 1237
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览