流程控制
shell编程语句是顺序执行,为了实现不同结果就需要改变执行顺序
流程控制-if
单分支if条件语句
if [ 条件判断 ] ;then
执行语句
fi
#隐含:如果条件判断不成立,就不执行下面的语句
例题:根分区大于80%就打印告警信息
#!/bin/bash
a=$(df -h | grep /dev/sda5 | awk '{print $5}' | cut -d % -f 1)
if [ $a -gt 80 ] ;then
echo "Warning: Disk alert"
fi
双分支if条件语句
if [ 条件判断 ] ;then
条件成立执行语句
else
条件不成立执行语句
fi
例子:监控nginx服务是否down掉,如果down掉就通知管理员并且启动服务
#!/bin/bash
a=$(ps -ef | grep nginx | grep "master process")
if [ -n "$a" ];then
echo "OK"
else
echo "nginx Alarm" ; systemctl restart nginx
fi
多分支if条件语句
if [ 条件判断 ] ;then
条件成立执行语句
elif
条件成立执行语句
elif
条件成立执行语句
elif
条件成立执行语句
else
条件不成立执行语句
fi
#elif或的关系,只要符合其中一个就执行,第一个如果匹配到后续的elif不会再匹配
例子:判断一个文件是否是普通文件还是目录
#!/bin/bash
read -t 30 -p "Please enter the file path:" file
if [ -f $file ];then
echo "The $file is common file"
elif [ -d $file ];then
echo "The $file is directory"
else
echo "The $file is unknown"
fi
#注意【】需要2边空格