目录
if条件语句语法
单分支结构
语法:
if [ 条件 ]
then
指令
fi
或
if [ 条件 ];then
指令
fi
双分支结构
语法:
if [ 条件 ]
then
指令1
else
指令2
fi
提示:前文的文件条件表达式[ -f "$file1" ]&&echo 1 ||echo 0
就相当于双分支的if[ -f "$file1" ];then echo 1;else echo 0;fi
举例:
开发shell脚本判断系统剩余内存的大小,如果低于100M就邮箱报警给管理员,并加入系统定时任务没3分钟执行一次检查
vim Mem.sh
#/bin/bash
Free=`free -m | grep "Mem" | awk '{print $4}'`
if [ "$Free" -ge "100" ];then
echo "free is ok."
else
echo "The Memtotal is false!!!"
echo "free is less than 500M">>/tmp/mail
mail -s "free mail" 1203978143@qq.com </tmp/mail
fi
sleep 180
添加定时任务
vim /var/spool/cron/root
*/3 * * * * /bin/bash /home/xiaopi/Mem.sh
通过if比较整数大小
#/bin/bash
#no.1
if [ "$#" -ne 2 ];then
echo "USAGE: num1 num2"
exit 1
fi
#no.2
if [ ! "`echo "$1"|sed -r 's#[^0-9]##g'`" = "$1" ];then
echo "first arg must be int"
exit 2
fi
if [ ! "`echo "$2"|sed -r 's#[^0-9]##g'`" = "$2" ];then
echo "second arg must be int"
exit 2
fi
#no.3
if [ "$1" -eq "$2" ];then
echo "$1 = $2"
elif [ "$1" -gt "$2" ];then
echo "$1 > $2"
else [ "$1" -lt "$2" ]
echo "$1 < $2"
fi
#需要注意事项
#每个if后面都需要有fi进行匹配
#未进行到最后一个if判断的需要添加exit模块
#|| 在if中可以用取反的方式来进行判断;&&在if中用then来进行下一步
#多个条件的if语句,最后一个判断可以用else
监控mysql服务
没有的话进行下载并开启
cat check_db.sh
#/bin/bash
if [ `sudo netstat -tnlp|grep mysqld|wc -l` -ge "1" ];then
echo "Mysql is Running."
else
echo "Mysql is Stopped."
sudo yum -y install mysql
systemctl start mariadb
fi
检查web界面
cat check_web.sh
#/bin/bash
#if [ "`curl -I -s -o /dev/null -w "%{http_code}\n" http://192.168.122.70`" = "200" ]
#根据网站返回状态码进行判断网页服务是否开启
#-I 显示信息头部
#-s 表示静默显示,会屏蔽因管道传参引起的错误信息
#-o 表示将结果丢掉垃圾桶
#-w 表示输出完之后显示
#if [ "`curl -I http://192.168.122.70 2>/dev/null|head -1|egrep '(200|301|302)'|wc -l`" -eq "1" ]
#根据返回状态码为200或301或302都代表网站存在,服务正常
if [ "`curl -s http://192.168.122.70 &>/dev/null&&echo $?`" = "0" ]
#根据访问结果成功来判断网站服务正常
#if [ "`curl -s http://localhost`" = "Apache2" ]
#根据页面上是否存在“Apache2”字段来判断网站服务是否存活,内容比较严格
then
echo "http is running"
else
echo "http is stopped"
/usr/bin/systemctl start apache2
fi
也可以根据判断页面数据可否下载判断
[root@oldboy scripts]# cat judgehttpbyurl1.sh
#!bin/sh
#wget-T 10-q--spider http://10.0.0.7 >/dev/null
wget-T 10 -q --spider http://10.0.0.0.19 >&/dev/null
#--spider: 测试下载链接是否有效
#curl -s http://10.0.0.7 >/dev/null
if [ $?-eq 0 ];then
echo "httpdis running.
else
echo "httpd is not running.".
/application/apache/bin/apachectl start
fi