美文网首页
流程控制 _ if 判断

流程控制 _ if 判断

作者: 慕知 | 来源:发表于2020-12-24 12:02 被阅读0次

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 语法中,第一条不成立才会执行第二条

相关文章

  • 6章 条件判断

    本章大纲 常见流程控制 if条件判断 复合条件判断 常见流程控制 if条件判断 Python 不支持swirch ...

  • 2018-12-11

    流程控制 流程控制语句:--条件判断语句--条件分支语句--循环语句 条件判断语句(if语句) 语法:if(条件表...

  • 8. 流程控制

    流程控制语句用来实现对程序流程的选择、循环和返回等进行控制。Python中主要的流程控制包括if(判断)、for(...

  • 流程控制语句、条件判断语句、多重条件判断语句

    流程控制语句: 条件判断语句: 多重条件判断语句:

  • GO语言基础(七)-流程和函数

    流程控制 Go中流程控制分三大类:条件判断,循环控制和无条件跳转。 if Go的if条件判断语句中不需要括号 Go...

  • 流程控制 _ if 判断

    1,if 语法 2,if 使用 示例一 示例二 示例三_监控磁盘 示例四_查询端口状态 示例五_查询分数脚本

  • 0.2 控制流程

    //---------------- 0.2 控制流程 --------------- 1.判断: //条件是中的...

  • batch入门教程(3)

    逻辑判断 逻辑判断(Logical Judgement),是指使用if指令或者其它判断指令进行判断并控制流程进行的...

  • Python精简入门级学习(三)

    Python精简入门学习之流程控制(上)-流程控制 -While循环:适用于对未知的循环次数 用于判断 -for使...

  • Python精简入门学习(三)

    Python精简入门学习之流程控制(上) -流程控制 -While循环:适用于对未知的循环次数 用于判断 -for...

网友评论

      本文标题:流程控制 _ if 判断

      本文链接:https://www.haomeiwen.com/subject/kpbynktx.html