为什么用它?
case 语句:多个值,匹配不同的模式,如果匹配成功,执行相对应的命令。
是什么?
语法结构:比如,结账系统,选择烤鸭(模式1),算的是烤鸭的价格(先告诉您,command1告诉您烤鸭一只,command2询问您确定吗?);选择龙虾,算的是烤鸭的价格,直到清单列完,则结束(esac),计算总价。
case 值 in
模式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 价格是 100元
let sum+=100
;;
2) echo $MENU 价格是 88元
let sum+=88
;;
3) echo $MENU 价格是 66元
let sum+=66
;;
4) echo $MENU 价格是 166元
let sum+=166
;;
5) echo $MENU 价格是 200元
let 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
|