当前位置: 首页 > news >正文

bash上下键选择选项demo脚本

效果如下:

 废话不多说,上代码:

#!/bin/bashoptions=("111" "222" "333" "444")  # 选项列表
options_index=0  # 默认选中第一个选项
options_len=${#options[@]}echo "请用上下方向键进行选择,空格键选中/取消,回车键确认结果"# 定义一个数组来存储选中的结果
selected=()
for ((i=0; i<${options_len}; i++));doselected[$i]=0
done# 渲染选项列表
render_options() {for i in "${!options[@]}"; do# 首先渲染已经选中的选项if [ ${selected[$i]} -eq 1 ];thenif [ $i -eq $options_index ]; thenecho -e "\033[1;41;34m${options[$i]}\033[0m"  # 已选中,已选择elseecho -e "\033[1;41;33m${options[$i]}\033[0m"  # 已选中,未选择fielif [ $i -eq $options_index ]; thenecho -e "\033[1;34m${options[$i]}\033[0m"  # 未选中,已选择elseecho "${options[$i]}"  # 未选中,未选择fidone
}# 初始渲染
render_options# 为了让read能读到空格键
IFS_store=$IFS
IFS=''while true; doread -s -n 1 key  # 读取单个按键输入,不显示在终端上case $key in"A")  # 上箭头键if [ $options_index -gt 0 ]; thenoptions_index=$((options_index - 1))# 在第一行按上键,到最后一行elif [ $options_index -eq 0 ]; thenoptions_index=$((${options_len} - 1))fi;;"B")  # 下箭头键if [ $options_index -lt $(( ${options_len} - 1 )) ]; thenoptions_index=$((options_index + 1))# 在最后一行按下键,到第一行elif [ $options_index -eq $(( ${options_len} - 1 )) ]; thenoptions_index=0fi;;" ")  # 空格键# selected[$options_index]的值,0、1切换selected[$options_index]=$((1 - ${selected[$options_index]}));;"")  # 回车键break;;esactput cuu ${options_len}  # 光标移动回到选项列表的开头tput ed  # 清除当前行render_options  # 重新渲染选项列表
done# 恢复IFS变量
IFS=$IFS_store# 最后选中的所有结果
result=()
for ((i=0; i<options_len; i++));doif [ ${selected[$i]} -eq 1 ];thenresult+=(${options[$i]})fi
doneecho "选中:${result[@]}"

http://www.lryc.cn/news/189227.html

相关文章:

  • cf 1886A
  • Spring5应用之事务属性
  • C# 搭建一个简单的WebApi项目23.10.10
  • VGG卷积神经网络实现Cifar10图片分类-Pytorch实战
  • CentOS 7文件系统中的软链接和硬链接
  • 【AI】深度学习——前馈神经网络——全连接前馈神经网络
  • 超简单的视频截取方法,迅速提取所需片段!
  • ArcGIS/GeoScene脚本:基于粒子群优化的支持向量机回归模型
  • vue3组件的通信方式
  • Qt QPair
  • K8S云计算系列-(3)
  • ardupilot罗盘数据计算航向
  • 第六章:最新版零基础学习 PYTHON 教程—Python 正则表达式(第一节 - Python 正则表达式)
  • docker安装Jenkins完整教程
  • [CISCN 2019初赛]Love Math - RCE(异或绕过)
  • C++ 使用getline()从文件中读取一行字符串
  • JS进阶-原型
  • 虹科方案 | 汽车CAN/LIN总线数据采集解决方案
  • HTML5+CSSDAY4综合案例一--热词
  • 【源码】hamcrest 源码阅读 泛型 extends 和迭代器模式
  • IntelliJ IDEA 2023.1 版本可以安装了
  • 安全论坛和外包平台汇总
  • 9-2-Dataset创建-import调用
  • XSS原理
  • 记一个带批注、表头样式的导入导出excel方法(基于easyexcel)
  • 二叉搜索树--新增节点-力扣 701 题
  • C++ - 智能指针 - auto_ptr - unique_ptr - std::shared_ptr - weak_ptr
  • 【快速入门】JVM之类加载机制与Native
  • R实现数据分布特征的视觉化——多笔数据之间的比较
  • TCPUDP