第四章 流程控制之条件判断

目录

2.1. if语句语法

2.1.1. 单分支结构

2.1.2. 双分支结构

2.1.3. 多分支结构

2.2. 案例

2.3. case多条件判断

2.3.1. 格式

2.3.2. 执行过程

2.3.3. 示例


2.1. if语句语法

2.1.1. 单分支结构

# 语法1:
if <条件表达式>
then
    指令
fi
#语法2:
if <条件表达式>;then
    指令
fi

2.1.2. 双分支结构

if <条件表达式>
then
指令序列1
else
指令序列2
fi

2.1.3. 多分支结构

if 条件表达式1
then
    指令序列1
elif 条件表达式2
then
    指令序列2
else
    指令序列n
fi

2.2. 案例

例1:编写脚本choice1.sh,利用单分支结构实现输入2个整数,输出最大值

#!/bin/bash

#输入两个整数,输出最大值

read -p "请输入第一个整数:" x

read -p "请输入第二个整数:" y
#
#max=$x
#
#if (($max<y))
#then
#       max=$y
#fi
#
#echo "最大值为:$max"

if (($x>$y))
then
        max=$x
else
        max=$y
fi

例2:面试题,编写脚本choice2.sh,判断系统内存剩余容量大小,若低于100M则发送消息进行告警

#!/bin/nash

#编写脚本,判断系统容量大小,若低于100m则发送消息报错

free_mem=$(free -m | grep Mem | tr -s " " | cut -d " " -f4)

if (($free_mem<100))
then
        echo "警告,剩余内存空间为:$free_mem MB,低于警戒值"
else
        echo "剩余内存:$free_mem MB,空间容量足够。"
fi

例3:编写脚本choice3.sh,判断当前脚本的执行者,若不是root账户则提示,并退出

# 检查当前账户的4种方法
[root@server ~]# whoami
root
[root@server ~]# id -u
0
[root@server ~]# echo $USER
root
[root@server ~]# echo $UID
0
#!/bin/bash

#判断当前脚本的执行者,若不是root账户则退出

if [ "$USER"!="root" ]
then
        echo "please switch user root"
        exit
fi

例4:编写脚本choice4.sh,实现闰年的判断

#!/bin/bash

#判断闰年

#算法:能被4整除,但不能被100整除或者能被400整除

read -p "请输入四位数整数的年份:" year

if ((year%4==0)) && ((year%100!=0)) || ((year%400==0))
then
        echo "闰年"
else    
        echo "平年"
fi  

例5:编写脚本choice5.sh,判断sshd是否运行

统计某个服务是否运行的方法

1.ps -ef | grep sshd | grep -v grep | wc -l

2.netstat -lntup | grep 22 | wc -l

#!/bin/bash

#检测sshd服务是否运行

num=$( ps -ef | grep sshd | grep -v grep  | wc -l)

if (($num>0))
then    
        echo "sshd is running!"
else
        echo "sshd is not running"
fi 

例6:面试题,编写脚本choice6.sh,判断主机是否存活

#!/bin/bash

#判断主机是否存活

read -p "请输入测试主机的IP地址:" ip

ping -c 2 -w 3 $ip &> /dev/null

if [ $? -eq 0 ]
then    
        echo "主机$ip已运行"
else    
        echo "主机$ip 未运行"
fi      

拓展

#!/bin/bash

#判断主机是否存活

for ip in 192.168.223.{125..135}
do
        ping -c 2 -w 3 $ip &> /dev/null

        if [ $? -eq 0 ]
        then
                echo -e  "\e[1;31m主机$ip 已运行\e[0m"
        else
                echo "主机$ip 未运行"
        fi
done

例9:编写脚本choice9.sh,判断当前主机cpu生产商

#!/bin/bash

vendor=$(grep vendor_id  /proc/cpuinfo | uniq | cut -d ":" -f2 )

if [ $vendor == GenuineIntel ]
then
        echo "Intel"
elif [ $vendor == AuthenticAMD ]
then
        echo "AMD"
else
        echo "other"
fi

2.3. case多条件判断

2.3.1. 格式

case 变量名 in
    值1)
    指令1
    ;;
    值2)
    指令2
    ;;
    值3)
    指令3
    ;;
    *)
    默认
esac

2.3.2. 执行过程

case语句会将该变量的值与 )括号中的值相比较,如果与某个值相等,则执行对应语句。

当遇到“;;”符号时,就跳出case语句,执行esac语句后面的语句。

如果没有与任何一个值相匹配,则执行*)后面的一组语句

2.3.3. 示例

例10:编写脚本choice10.sh,对上例7的百分制成绩判断等级成绩进行改写

#! /bin/bash

read -p "请输入百分之成绩:" score

case $score in
        9[0-9]|100)
                echo "成绩优秀"
        ;;
        8[0-9])
                echo " 成绩良好"
        ;;
        6[0-9]|7[0-9])
                echo "成绩合格"
        ;;
        *)
                echo " 补考" 
esac

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值