如何制作数字选择式Bash菜单?求简化实现方案
两种简洁的数字选项Bash菜单实现方案
没问题!我帮你整理了两种符合需求的数字选项菜单实现,一种是基于你原脚本的简化优化版,另一种是更轻量的手动实现,你可以根据场景选择:
方案一:简化版Select菜单(保留原生select优势)
原脚本已经用了select(它本来就会自动生成数字选项),我们可以优化得更简洁,避免重复写选项字符串,用数组索引来匹配逻辑:
#!/bin/bash # 简化版数字选项菜单 options=("Choice 1" "Choice 2" "Choice 3" "Exit") # 自定义提示语 PS3='请输入你的选择(数字):' select opt in "${options[@]}" do case $REPLY in 1) echo "你选择了选项1:${options[0]}" # 这里写选项1的执行逻辑 ;; 2) echo "你选择了选项2:${options[1]}" # 这里写选项2的执行逻辑 ;; 3) echo "你选择了选项3:${options[2]}" # 这里写选项3的执行逻辑 ;; 4) echo "退出菜单..." break ;; *) echo "无效选项:$REPLY,请输入1-4之间的数字";; esac done
优点:
- 原生
select会自动生成带数字的菜单列表,不用手动打印 - 通过
$REPLY直接匹配数字,逻辑更直观
方案二:纯Read+Case手动实现(完全自定义格式)
如果你想要完全控制菜单的显示样式,比如调整缩进、添加分隔线,可以用这种手动打印菜单+读取输入的方式:
#!/bin/bash # 自定义数字选项菜单 while true; do # 打印菜单(可自由修改格式) echo "=====================" echo "请选择操作:" echo "1) Choice 1" echo "2) Choice 2" echo "3) Choice 3" echo "4) Exit" echo "=====================" read -p "输入数字选择:" choice # 匹配选项逻辑 case $choice in 1) echo "执行选项1的操作..." # 这里写选项1的代码 ;; 2) echo "执行选项2的操作..." # 这里写选项2的代码 ;; 3) echo "执行选项3的操作..." # 这里写选项3的代码 ;; 4) echo "退出程序..." exit 0 ;; *) echo "⚠️ 无效输入,请输入1-4的数字!";; esac # 可选:每次操作后换行分隔 echo -e "\n" done
优点:
- 菜单样式完全自定义,想加什么格式都可以
- 逻辑清晰,适合需要高度定制菜单的场景
两种方案都满足你要的“数字选项”需求,选哪种看你对菜单样式的灵活度要求啦~
内容的提问来源于stack exchange,提问作者yadoneknowbigsnack
相关产品推荐
相关产品推荐

