server can be selected
The selected server can be highlighted
#!/bin/bash
# 服务器列表
servers=("server1" "server2" "server3")
# 获取菜单项数量
menu_length=${#servers[@]}
# 初始化选择索引
selected_index=0
# 清除屏幕
clear
# 定义高亮显示函数
highlight() {
# echo -e "\e[1m$1\e[0m" # 使用ANSI转义序列高亮显示文本
# echo "\033[1;97;41m$1\033[0m" # 红色背景色
# echo "\033[38;5;202m$1\033[0m" # 橘红
# echo "\033[48;5;202m$1\033[0m" # 橘红背景色
# echo "\033[7m$1\033[0m" # 使用反色(白色前景色)高亮显示文本
# echo "\033[7;97;48;5;208m$1\033[0m" # 使用反色和橘红色字体高亮显示文本
echo "\033[48;5;208;97m$1\033[0m" # 使用橘红色背景和白色字体高亮显示文本
}
# 定义到连接服务器的方法
connect_to_server() {
local server=$1
# 在这里添加连接到选定服务器的命令
# 示例:ssh user@hostname
# 替换为你实际的连接命令 # 我这里有相应的脚本 所以直接调用这个脚本
# ssh user@hostname
# 连接到服务器
}
# 循环显示菜单
while true; do
# 移动光标到第一行
tput cup 0 0
# 打印菜单项
for ((i = 0; i < ${menu_length}; i++)); do
if [ $i -eq $selected_index ]; then
highlight "> ${servers[$i]}" # 高亮显示选中项
else
echo " ${servers[$i]}"
fi
done
# 读取用户输入并禁止回显
read -s -n 1 key
# 处理用户输入
case $key in
"A") # 上箭头
selected_index=$(((selected_index - 1 + menu_length) % menu_length))
;;
"B") # 下箭头
selected_index=$(((selected_index + 1) % menu_length))
;;
"D") # 左箭头
selected_index=0
;;
"C") # 右箭头
selected_index=$((menu_length - 1))
;;
"") # 回车键
selected_item="${servers[$selected_index]}"
if [ "$selected_item" = "Quit" ]; then
echo "退出"
break
else
# 在这里添加连接到选定服务器的命令
connect_to_server "$selected_item"
break
fi
;;
esac
done