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