shell编程流程控制-if

流程控制

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边空格

猜你喜欢

转载自blog.csdn.net/yangshihuz/article/details/111476518