条件测试

主要用法为:&& 和 || 配合表达式使用

语法格式(一般使用第二种): 1, test 表达式 2,[ 表达式 ]

逻辑组合:
&& 两层含义:1,之前指令执行成功会执行之后指令;2,对于两边的执行结果只要一边失败整体就为失败
|| 两层含义:1,之前指令执行失败会执行之后指令;2,对于两边的执行结果只要一边成功整体就为成功

1,对字符串进行测试
== 判断两边是否相等 != 判断两边是否不等
test a == a //方式一:test ,使用常量判断,再用echo $?测试结果
test a == b
[ a == a ] //方式二:中括号,使用常量判断,再用echo $?测试结果
[ a == b ]
[ $a == $b ] //使用变量判断两个变量的值是否相等
[ $a != $b ] //使用变量判断两个变量的值是否不相等
-z 判断变量是否为空 ! -z 判断变量是否非空
a=10
[ -z $a ] //判断变量a是否为空,如果为空则判断正确
[ ! -z $a ] //判断变量a中是否有值,有值则判断正确

2,数字
-eq 是否相等 -ne 是否不等 -gt 是否大于
-ge 是否大于等于 -lt 是否小于 -le 是否小于等于

编写脚本,每分钟检查服务器,如果用户数量大于30,则发邮件给管理员报警!
#!/bin/bash
n=$(cat /etc/passwd | wc -l)
[ $n -gt 30 ] && echo "警惕!有新用户创建" | mail -s ""alter! new user created"" root

chmod +x test01.sh //脚本写完后,赋予x权限
crontab -e
* * * * * /opt/test01.sh //每2分钟执行脚本
rm -rf /var/spool/mail/root //清空邮箱

3,文件
-e 判断文件是否存在,不关心类型
-f 判断文件是否存在,类型是普通文件
-d 判断文件是否存在,类型是目录
-r 判断当前用户对文件是否有读权限,对root无效
-w 判断当前用户对文件是否有写权限,对root无效
-x 判断当前用户对文件是否有执行权限(目录表示是否可以进入)

注意:虽然&&和||可以实现逻辑组合,但如果情况比较复杂就可能需要n多个&&或者||,会导致脚本难写,可读性差。此时就可以使用if分支

posted @ 2021-08-25 09:40  小白白bai  阅读(135)  评论(0)    收藏  举报