case


case的介绍

case ... esac 为多选择语句,与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case ... esac 语句,esac(就是 case 反过来)作为结束标记。
可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。
在某些时候,case要优于if,少写很多判断

case的语法格式

case 值 in
	动作1)
		cmd1
		;;
	动作2}
		cmd1
		;;
esac
###################### 跳板机例子 #####################
cat << EOF
+---------------------+
| 1.172.16.1.7 web01  |
+---------------------+
| 2.172.16.1.8 web02  |
+---------------------+
| 3.172.16.1.9 web03  |
+---------------------+
EOF

read -p '请输入需要连接的机器:' host

case $host in
	1|172.16.1.7|web01)
		ssh 172.16.1.7
		;;
    2|172.16.1.8|web02)
		ssh 172.16.1.8
		;;
	3|172.16.1.9|web03)
		ssh 172.16.1.9
		;;
	*)
		echo "Usage: $0 请输入主机名 /主机IP /主机编号 进行远程连接"
esac

shell 字体颜色

# 颜色参考
加颜色的固定格式
\e[1;31m 红色的zls\e[0m
[root@zabbix01 ~]# echo -e '\e[1;31m 红色的zls\e[0m'
红色的zls
## 分析
1)开头的 \e 或者 \E 或者 \033 表示开始调整颜色


2)中括号中的第一个数字 1; 这里代表字体的状态
0:表示正常
1:表示加粗
2:变浅
3:斜体
4:下划线
5:闪烁


3)再往后 Nm表示字体颜色
30m:黑色
31m:红色
32m:绿色
33m:黄色
34m:蓝色
35m:紫色
36m:天蓝
37m:白色


4)背景颜色
40:黑底
41:红底
42:绿底
43:黄底
44:蓝底
45:紫底
46:天蓝
47:白底

whiptail

whiptail --title "my jump server" --msgbox "welcome to zuan" 10 60
--title #指定标题内容
--msgbox #指定消息内容
10 # 消息框的高度
60 # 消息框的宽度

image-20240709174017044

布尔值选择框

whiptail --title "welcome " --yesno "make your choise" 10 60
--title # 指定标题内容
--yesno # 指定选择框消息内容
--yes-button # 自定义yes按钮
--no-button # 自定义no按钮
whiptail --title "welcome " --yesno "请选择部门" --yes-button '运维' --no-button '开发' 10 60