条件测试
条件测试可以使得脚本应对多种状况,或者配合上一篇写的变量应用提高应用范围。
条件测试的使用方法有两种如下
- test 表达式
- [表达式]
条件测试的类型
字符串类型
- == #等于
- != #不等于
变量类型
- -z 变量为空
- !-z 变量非空
逻辑组合类型
- && 与
- || 或(与编程内部的不一样)
例如
[ $USER != root ] && exit #如果当前用户不是root则退出
[ $USER != root ] || exit #如果当前用户是root则退出
#重叠用法
A && B && C #如果要执行C必须AB都成功
A || B || C #如果要执行C必须AB都失败
结合应用
#!/bin/bash
test $USER != root && echo "niger go work" && exit
read -p "yum what": n
yum -y install $n &> /txt.txt
systemctl start $n && echo "succesl" || echo "haha sb"
数字类型
-eq : 是否相等
-ne : 不等
-gt :大于
-ge : 大于等于
-lt : 小于
-le: 小于等于
我们可以使用上面的知识来写一个小脚本,功能为制作用户检查系统
前置条件:安装mailx postfix ,并且启动postfix
#!/bin/bash
x=$(cat /etc/passwd | wc -l) #通过检测passwd文件查看有几名用户
test x != 5 && echo "fuck heik goinr" | mail -s test root #如果用户数量变化则发邮件提醒
这是一个小安全脚本用于检测系统内的用户数量与原有值5是否一致如果不一致则发邮件给root用户,当然这个脚本并不完善只是一个简单的检测如果大家有更好的思路或者意见也可以在评论区提出来(俺一定回你)。
脚本写完后使用cron计划来自动执行
文件类型
-e :判断文件是否存在,全
-f :判断文件是否存在,类型为文件
-d :判断文件是否存在,类型为目录
-r :判断文件是否有读权限
-w:判断文件是否有写权限
-x:判断文件是否可以进入
例如
test -e /文件名
echo $? #检测文件是否存在
[ -r /文件名 ]
echo $? #检测当前用户是否可以存在对该文件的读取权限