if单分支结构
if条件语句类似于“如果。。。那么。。。”。
语法一:
if <条件表达式> then 指令 fi
语法二:
if <条件表达式>;then 指令 fi
<条件表达式>也可以是test、[]、[[]]、(())形式,按个人喜欢选择。
条件语句还可以携程嵌套形式(if条件语句中还有if条件语句),语法如下:
if <条件表达式> then if <条件表达式> then 指令 fi fi
例题
判断/etc/hosts文件是不是文件类型
#!/bin/bash if [ -f /etc/hosts ] then echo "this is a file!" fi
if双分支语句
双分支语句的结构类似于汉语的“如果,那么。。。否则。。。”
语法结构为:
if <条件表达式> then 指令集1 else 指令集2 fi
if多分支结构
多分支结构主体为:“如果。。,那么。。,否则如果。。,那么,否则如果。。,那么。。,否则。。。”
语法结构为:
if <条件表达式1> then 指令1 elif <条件表达式2> then 指令2 else 指令3 fi
elif <条件表达式>可以是多个。
注意每个elif的写法后都要有then,else后没有then。
脚本开发思路
1.分析需求:明白这个脚本要达到什么效果
2.设计思路:把需求分部拆解,一一实现
3.编码实现:再把每一步的内容整合起来形成脚本
if条件语句案例:
例1:监控MySQL数据库的状态
#!/bin/bash if [ `netstat -utpln|grep mysqld|wc -l` -gt 0 ] then echo "mysql is Running." else echo "mysql is Stopped." /etc/init.d/mysqld start fi
例2:监控web服务器状态
#!/bin/bash if [ `netstat -utpln|grep nginx|wc -l` -gt 0 ] then echo "Nginx is running." else echo "Nginx is stopped." /etc/init.d/nginx start fi
例3:制作rsync服务启动脚本
#!/bin/bash #chkconfig: 2345 20 80 #description: Rsyncd Startup scripts by yyang. if [ $# -ne 1 ] then echo $"usage:$0{start|stop|restart}" exit 1 fi if [ "$1"="start" ] then rsync --daemon sleep 2 if [ `netstat -utpln|grep rsync|wc -l` -ge 1 ] then echo "rsyncd is started." exit 0 fi elif [ "$1"="stop" ] then killall rsync &>/dev/null sleep 2 if [ `netstat -utpln|grep rsync|wc -l` -eq 0 ] then echo "rsyncd is stopped." exit 0 fi elif [ "$1"="restart" ] then killall rsync sleep 1 killpro=`netstat -utpln|grep rsync|wc -l` rsync --daemon sleep 1 startpro=`netstat -utpln|grep rsync|wc -l` if [ $killpro -eq 0 -a $startpro -ge 1 ] then echo "rsyncd is restarted." exit 0 fi else echo $"usage:$0{start|stop|restart}" exit 1 fi