让学妹爱不释手的case脚本有多好玩?

为什么用它?

case 语句:多个值,匹配不同的模式,如果匹配成功,执行相对应的命令。
请添加图片描述


是什么?

语法结构:比如,结账系统,选择烤鸭(模式1),算的是烤鸭的价格(先告诉您,command1告诉您烤鸭一只,command2询问您确定吗?);选择龙虾,算的是烤鸭的价格,直到清单列完,则结束(esac),计算总价。

casein
模式1)
    command1
    command2
;;
模式2)
    command1
    command2
;;
*)
    command1
    command2
;;
esac

实例一:用select配合case编写点菜脚本!

1、编写好玩的点菜脚本:
在这里插入图片描述

#!/bin/bash
sum=0
PS3="请点菜(1-6): "
select MENU in 烤鸭 海参 龙虾 烤全羊 火锅 点菜结束;do
case $REPLY in
1)
        echo $MENU 价格是 100let sum+=100
        ;;
2)      echo $MENU 价格是 88let sum+=88
        ;;
3)      echo $MENU 价格是 66let sum+=66
        ;;
4)      echo $MENU 价格是 166let sum+=166
        ;;
5)      echo $MENU 价格是 200let sum+=200
        ;;
6)      echo "点菜结束,退出"
        break
        ;;
*)      echo "点菜错误,重选"
   		;;
esac
done
echo "总价是:$sum元"

验证:
在这里插入图片描述

2、 运维脚本:
编写运维脚本,比如:关闭防火墙,ping主机连通等放到一个脚本,方便使用。

#!/bin/bash
sum=0
PS3="请选择(1-3): "
select MENU in 关防火墙 ping主机 改ip 结束;do
case $REPLY in
1)      systemctl stop firewalld
        setenforce 0
        echo $MENU 成功
        let sum+=1
        ;;
2)      LIST=`cat ipadds.txt`
        for IP in $LIST
        do
        ping -c3 -i0.2 -W3 $IP &> /dev/null
           if [ $? -eq 0 ]
           then
               echo "host $IP is up!"
           else
               echo "host $IP is down!"
           fi
        done
        echo $MENU 成功
        let sum+=1
        ;;
3)      ENS33=/etc/sysconfig/network-scripts/ifcfg-ens33
        DIR=/backup/`date +%Y-%m-%d`
        if
        [ ! -d $DIR ];then
        mkdir -p $DIR
        fi
        cp $ENS33 $DIR
        if
        [ $? -eq 0 ];then

        sed -i 's/dhcp/static/'  $ENS33
        sed -i '/^ONBOOT/c\ONBOOT=yes' $ENS33
        read -p "ip: " IP
        echo "IPADDR=$IP" >>  /etc/sysconfig/network-scripts/ifcfg-ens33
        ifdown ens33 &> /dev/null
        ifup ens33 &> /dev/null
        fi
        echo $MENU成功
        let sum+=1
        ;;
4)      echo "结束,退出"
        break
        ;;

*)      echo "错误,重选"
                ;;
esac
done
echo "执行:$sum项"

验证:

1、编辑需要ping的主机
在这里插入图片描述
执行脚本:
在这里插入图片描述
扩展:我们可以给里面多加功能,比如:改ip、配置yum源等等!
2、改ip
在这里插入图片描述
实例二:

实现输入对应的代码,显示相关信息,B与b等同,只有输入Q与q才退出,实现下图效果。
在这里插入图片描述

#!/bin/bash
echo "A.主机IP"
echo "B.磁盘剩余空间"
echo "C.系统运行时间"
echo "Q.退出"
#read -p "请输入你要查询的数据:" DATA
IP=`ifconfig ens33 | grep "netmask" | awk '{print $2}'`
D=`df -Th | grep "/$" | awk '{print $5}'`
R=`uptime | awk '{print $3"分钟"}'`
while true
do
        read -p "请输入你要查询的数据:" DATA
        if [ $DATA = q ] || [ $DATA = Q ]
        then
        exit 1
        fi
case $DATA in
        a|A)
                echo "主机IP是:$IP"
;;
        b|B)
                echo "磁盘剩余空间:$D"
;;
        c|C)
 				echo "系统运行时间:$R"
;;
        q|Q)
                        echo "退出"
;;
        *)
        echo "错误,重选"
;;
esac
done                           

实例三:

编写shell巡检信息,效果如下图:

在这里插入图片描述

#!/bin/bash
DATE=$(date +%F\ %T)
UPTIME=$(uptime | awk '{print $3'})
CPU=$(top -b -n 1 | grep "Cpu" | awk '{print $8}')
MEM=$(expr $(free | grep "Mem" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))
H=$(hostname)
I=$(ifconfig |awk 'NR==2{print $2}')
D=$(df -hT | grep "/$" | awk '{print $6}')
Y=$(df -hT | grep "/$" | awk '{print $5}')

echo "主机名称:$H"
echo "主机IP:$I"
echo "当前时间:$DATE"
echo "运行时间:$UPTIME小时"
echo "CPU使用率:$CPU%"
echo "内存占用率:$MEM%"
echo "磁盘使用率:$D"
echo "磁盘剩余空间:$Y"

注意:MEM变量值还有另一种方法,MEM=$(free -m | awk -F '[ :]+' 'NR==2{printf "%d", ($3)/$2*100}')

截图:
在这里插入图片描述


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Friends of the wind

您的是我坚持原创免费作品的不懈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值