1,if 语法
if 条件;then
代码
代码
elif 条件;then
代码
代码
...
else
代码
fi
## 支持单分支
if ...
fi
## 支持多分支
if
elif
fi
或
if
else
fi
2,if 使用
[root@m01~]# vim /script/ex.sh
#!/bin/bash
echo "hello"
if [ 2 -eq 2 ];then
echo "perfect"
fi
echo "bye"
[root@m01~]# chmod +x /script/ex.sh
[root@m01~]# /script/ex.sh
hello
perfect
bye
原脚本
[root@m01~]# vim /script/zz.sh
#!/bin/bash
[ $# -ne 2 ] && echo "必须输入两个参数" && exit
[[ ! $1 =~ ^[0-9]+(\.[0-9])?$ ]] && echo "第一个参数必须是数字" && exit
[[ ! $2 =~ ^[0-9]+(\.[0-9])?$ ]] && echo "第二个参数也要是数字" && exit
(( $1 == $2 )) && echo "值相等"
[ $1 -gt $2 ] && echo "第一个值大"
[ $1 -lt $2 ] && echo "第二个值大"
注意:正则表达式需要需要用 [[ ]]
if 优化脚本_________计算整数大小
[root@m01~]# vim /script/zz.sh
if [ $# -ne 2 ] || [[ ! $1 =~ ^[0-9]+(\.[0-9])?$ ]] || [[ ! $2 =~ ^[0-9]+(\.[0-9])?$ ]];then
echo "必须输入两个参数"
echo "第一个参数必须是数字"
echo "第二个参数必须是数字"
fi
(( $1 == $2 )) && echo "值相等"
[ $1 -gt $2 ] && echo "第一个值大"
[ $1 -lt $2 ] && echo "第二个值大"
检测:
[root@m01~]# /script/zz.sh 22 44
第二个值大
if 优化脚本_________计算整数和浮点数大小
[root@m01~]# vim /script/zz.sh
if [ $# -ne 2 ] || [[ ! $1 =~ ^[0-9]+(\.[0-9])?$ ]] || [[ ! $2 =~ ^[0-9]+(\.[0-9])?$ ]];then
echo "必须输入两个参数"
echo "第一个参数必须是数字"
echo "第二个参数必须是数字"
exit
fi
res=`echo "$1>$2" | bc`
if [ $res -eq 1 ];then
echo "第一个值大"
elif [ $res -eq 0 ];then
echo "第二个值大"
else
echo "值相等"
fi
[root@m01~]# /script/zz.sh 3.3 4.5
第二个值大
[root@m01~]# /script/zz.sh 3.3 4
第二个值大
注意:使用bc,用$? 检测结果与正常相反,1表示成功;0表示失败
监控/磁盘的使用率,大于70% 报警
[root@m01~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 19G 2.0G 17G 11% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 26M 461M 6% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 497M 120M 378M 25% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@m01~]# df -h | grep "/$"
/dev/sda3 19G 2.0G 17G 11% /
[root@m01~]# df -h | grep "/$" | awk '{print $(NF-1)}'
11%
[root@m01~]# df -h | grep "/$" | awk '{print $(NF-1)}' | cut -d% -f1
11
编写脚本:
[root@m01~]# vim /script/df.sh
#!/bin/bash
res=`df -h | grep "/$" | awk '{print $(NF-1)}' | cut -d% -f1`
if [ $res -ge 70 ];then
echo "warning,当前磁盘使用率为 "$res"% "
else
echo "磁盘状态监控,no worry"
fi
[root@m01~]# chmod +x /script/df.sh
[root@m01~]# /script/df.sh
磁盘状态监控,no worry
[root@m01~]# /script/df.sh
warning,当前磁盘使用率为 11%
# 查看端口命令
[root@m01~]# netstat -an | grep -iw "listen"
或
[root@m01~]# netstat -an | grep -i "\blisten\b"
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
... ...
[root@m01~]# netstat -an | grep -iw "listen" | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
编写脚本
[root@m01~]# vim /script/port.sh
#!/bin/bash
[ $# -ne 1 ] && echo "请输入一个端口" && exit
netstat -an | grep -iw "listen" | grep $1 &> /dev/null
if [ $? -eq 0 ];then
echo "Port $1 is up"
elif [ $? -eq 1 ];then
echo "Port $1 is down"
fi
[root@m01~]# chmod +x /script/port.sh
[root@m01~]# /script/port.sh
请输入一个端口
[root@m01~]# /script/port.sh 43
Port 43 is down
[root@m01~]# /script/port.sh 22
Port 22 is up
# 查询分数脚本
1,输入分数
2,分数必须是整数
3,分数>=90,显示优秀
4,分数<90并且>80, 显示良好
5,其他的显示差
[root@m01~]# vim /script/check_score.sh
#!/bin/bash
read -p "请输入分数" score
[[ ! $score =~ ^[0-9]+$ ]] && echo "分数必须为整数" && exit
if [ $score -ge 90 ];then
echo "优秀"
elif [ $score -gt 80 -a $score -lt 90 ];then
echo "良好"
else
echo "差"
fi
[root@m01~]# chmod +x /script/check_score.sh
[root@m01~]# /script/check_score.sh tree
请输入分数3.3
分数必须为整数
[root@m01~]# /script/check_score.sh
请输入分数90
优秀
[root@m01~]# /script/check_score.sh
请输入分数87
良好
[root@m01~]# /script/check_score.sh
请输入分数56
差
注意⚠️:
脚本中的第二个判断elif [ $score -gt 80 -a $score -lt 90 ];可优化为elif [ $score -gt 80 ];
if 语法中,第一条不成立才会执行第二条
网友评论