一、case语法结构 --只满足一个

case 变量 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
模式3)
命令序列3
;;
*)
无匹配后命令序列
esac

案例一:删除指定用户并二次确认

#!/usr/bin/bash
read -p "yonghu" user
read -p "Are you sure?[y/n]" action
case "$action" in
y|Y|yes|YES)
userdel -r $user
echo "$user is deleted!"
;;
*)
echo "error"
esac

#执行
[root@ansible ~]# source delete.sh
输入您好删除的用户: zhangsan
Are you sure?[y/n]y
zhangsan is deleted!

案例二:跳板机脚本

#!/usr/bin/bash
#这是一个跳板机
trap "" HUP INT OUIT TSTP //trap “ ”忽视捕获信息
web1=jc-yanmb@192.168.154.134
web2=jc-yanmb@192.168.154.135
web3=jc-yanmb@192.168.154.136
while : //死循环
do
clear
cat <<-EOF //打印
============================================================
jumpserver
1) web1
2) web2
3) web3
===========================================================
EOF
echo -en "\e[1;34m input number: \e[0m" //-n 表示不换行
read num //不加-p为上一个echo信息
case "$num" in
1)
ssh $web1
;;
2)
ssh $web2
;;
3)
ssh $web3
;;

*)
esac
done
将脚本目录写入到开机自动执行改脚本 .bash_profile文件或.bashrc

案例三:系统管理工具箱:

#!/usr/bin/bash
#system manage
#v1.0 tianyum 2020-8-20

menu() { //函数写法
cat <<-EOF
################################################
# h. help #
# f. dis partition #
# d. filesystem mount #
# m. memtem load #
# u. system load #
# q. exit #
################################################
EOF
}
menu
while true

do
echo -en "\e[1;33m Please input [h for help]: \e[0m "
read action
case "$action" in
h)
clear
menu
;;
f)
fdisk -l
;;
d)
df -Th
;;
m)
free -m
;;
u)
uptime
;;
q)
#exit
break
;;
" ") ‘’ '' //表示空值
;;
*)
echo "error "

esac
done
echo "finsih......"