六、if语句
#单分支 if[ 表达式 ];then ... fi #双分支 if [ 表达式 ];then ... else ... fi
6.1 案例1
[root@localhost/data/sh]# vim ping.sh #!/bin/bash #判断主机是否存活 #ping -c 3 -i 0.5 -w 2 $1 &> /dev/null && echo "$1 is online" || echo "$1 is offline" #发三个包,每隔5秒,注释的为三元运算符方法 ping -c 3 -i 0.5 -w 2 $1 &> /dev/null if [ $?-eq 0 ];then echo "$1 is online" else echo "$1 is offline" fi
6.2 单分支案例2
磁盘空间已用大于80%报警
#!/bin/bash #磁盘空间已用大于80%报警 USED=$(df |grep /dev/mapper/centos-root | awk '{print $5}'|awk -F '%' '{print $1}') #将取到的值赋给USED if [ $USED -gt 40 ];then #为了方便演示,改为40 echo "警告!当前/目录的磁盘使用率超过为$USED%" fi
6.3 双分支案例3
[root@localhost/data/sh]# vim netstat.sh #!/bin/bash netstat -natp |grep :80 &> /dev/null #查看端口 if [ $? -eq 0 ] then echo "网站服务已在运行!" else if rpm -q httpd &> /dev/null #查看软件是否安装 then echo "正在启动httpd服务" systemctl start httpd else echo "正在安装并启动httpd服务" yum install -y httpd &> /dev/null && systemctl start httpd &> /dev/null fi fi
6.4 多分支案例4
#!/bin/bash read -p "请输入你的考试分数:" grade if [ $grade -ge 85 ]&& [ $grade -le 100 ] then echo "你的成绩为$grade" echo "你的成绩为优秀" elif [ $grade -ge 70 ]&&[ $grade -le 84 ] then echo "你的成绩为$grade" echo "你的成绩为良好" elif [ $grade -ge 60 ]&&[ $grade -le 69 ] then echo "你的成绩为$grade" echo "你的成绩为合格" else echo "你的成绩为$grade" echo "你的成绩不合格" fi
七、case语句
if的多分支是逐条判断,相对而言效率会低一些,而case语句,不满足的条件直接跳过,相对执行效率快一些
7.1 案例case并行判断
[root@localhost/data/sh]# vim case.sh #!/bin/bash #判断分数等级 read -p "请输入你的分数:(0-100)" num case $num in 100) echo "恭喜你获得$num 分" ;; [89][0-9]) #80-99 echo "优秀!获得$num 分" ;; [67][0-9]) #60-79 echo "获得$num 分继续努力" ;; [0-9] | [1-5][0-9]) #0-59 echo "继续努力!获得$num 分" ;; *) echo "输入有误,请重新输入" esac
八、总结
8.1 定义一个变量的方法
1.read -p 执行时显示提示信息变量名
2.变量名=变量值
export +变量名 生成为全局变量
8.2 浮点数的运算
echo "浮点运算字符串” Ibc
awk 'BEGIN{print 浮点运算字符串}’