一、在介绍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/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
。。。。。。。。。。。。。。。