模式匹配: case
case 变量 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 2
;;
模式 3|模式4|模式5) 可以多个匹配
命令序列 3
;;
*)
无匹配后命令序列
esac
#!/bin/bash
os_version=7.3
case "$os_version" in
7.3)
echo "7.3 ....."
;;
6.8)
echo "6.8 ....."
;;
*)
echo "no version ...."
esac
#!/bin/bash
read -p "Please input a username : " user
id $user &>/dev/null
if [ $? -ne 0 ];then
echo "no such $user"
exit 1
fi
read -p "Are you sure?[y/n]: " action
if [ "$action" != "y" ];then
echo "good"
exit
fi
userdel -r $user
案例 1:简单的 JumpServer
wj: ssh-keygen
ssh-copy-id web1
跳板主机
1) mysql1
2) mysql2
3) bj-web1
h) help
q) exit
#!/bin/bash
#捕捉信号
trap "" HUP INT OUIT TSTP #例如 不能按ctrl+c 强制退出此脚本
web1=1.1.1.1
web2=2.2.2.2
mysql=3.3.3.3
while :
do
cat <<-EOF
1.web1
2.web2
3.mysql
EOF
read -p "input number : " num
case "$num" in
1)
ssh wj@$web1
;;
2)
ssh wj@$web2
;;
3)
ssh wj@$mysql
;;
"")
;;
*)
echo "error ...."
esac
done
案例 2:系统管理工具箱
Command action
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
#!/bin/bash
menu(){
cat <<-EOF
h. help
f. disk partition
d. filesystem mount
m. memory
u. system load
q. quit
EOF
}
menu
while :
do
read -p "Please input[h for help]: " action
case "$action" in
h)
menu
;;
f)
fdisk -l
;;
d)
df -Th
;;
m)
free -m
;;
u)
uptime
;;
q)
#exit
break
;;
"") #如果是空可以什么都不做
;;
*)
echo "error"
esac
done
echo "finish ......"