本文共 2041 字,大约阅读时间需要 6 分钟。
一、在介绍if语句先了解其语法
1)常用的选项如下
-d:测试是否为目录(Directory)或目录是否存在
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)过文件是否存在
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
2)数字比较
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)
3)字符串比较:字符串比较通常用来检查用户输入、系统环境是否满足条件、在提供交互式操作的shell脚本中也可以判断用户输入位置参数是否符合要求,字符串的常用操作如下
=:字符串内容相同
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
!=失取反的意思,
4)逻辑测试:是判断两个或多个条件之间的依赖关系,当系统取决于多个条件时,根据这些条件或其中的一个条件成立等情况需要有一个过程,常用的逻辑测试如下所示
-a或&&:逻辑与,“而且”的意思
-o或||:逻辑或,“或者”的意思
! 逻辑否
二、实战
1)//编写一个脚本判断挂载点目录zm目录是否存在如果不存在则新建此目录
#!/bin/bashif [ ! -d /media/zm ]then mkdir -p /media/zm fi
2)//通过一个脚本检查vsftpd服务是否运行,如果已经运行列出器监听的地址PI号,否则输出提示“警告vsftpd服务不可用!”
#!/bin/bash/etc/init.d/vsftpd status &>>/dev/nullif [ $? -eq 0 ]then echo "vsftpd的监听地址:$(netstat -anpt | awk '{print $3}' )" echo "进程PID号$(pgrep -x vsftpd)"else echo "警告vsftpd服务不可用"fi
3)///编写脚本判断系统中sysstat软件包的安装情况并编写监控脚本存在异常时邮件告警,监控CPU使用率、内存使用率、根分区的占用率
#!/bin/bashrpm -q sysstat &>> /dev/nullFile=/var/log/sysmon.logMail=root@contos.benet.comCPU=$(expr 100 - $(mpstat | tail -1 | awk '{print $11}' | awk -F. '{print $1}'))MEM=$(expr $(free -m | grep "cache:" | awk '{print $3}') \* 100 / $(free -m | grep "Mem:" | awk '{print $2}'))DISK=$(df -hT | grep "/$" | awk '{print $6}' | awk -F% 'print $1')if [ $? -eq 0 ]then echo "$(rpm -q sysstat)"else dir=$(cd /media/Packages) echo "将要自动安装sysstat软件" rpm -ivh /media/Packages/sysstat-*.rpmfiif [ $CPU -ge 1 ]then echo "当前CPU的使用率为:$CPU" >> $Filefiif [ $MEM -gt 2 ] then echo "当前内存的使用率为:$MEM" >> $Filefiif [ $DISK -gt 2 ]then echo "当前根分区的使用率为:$DISK" >>$Filefiif [ -f $File ]then cat $File | mail -s "机房运行状态" $Mail rm -rf $Filefi
4)//猜价格游戏,范围是0-999。太好玩了
#!/bin/bashprice=$(expr $RANDOM % 100 )TIMES=0echo "商品实际价格范围为0-99,猜猜看是多少?"while truedoread -p “请输入你猜的价格目录:” INTlet TIMES++if [ $INT -eq $price ];thenecho "恭喜你答对了,实际价格是 $price"echo "你总共猜测了 $TIMES 次"elif [ $INT -gt $price ];thenecho "太高了!"elseecho "太低了!"fidone
。。。。。。。。。。。。。。。