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

Linux shell编程学习笔记30:打造彩色的选项菜单

1 需求分析

Linux shell编程学习笔记21:用select in循环语句打造菜单icon-default.png?t=N7T8https://blog.csdn.net/Purpleendurer/article/details/134212033?spm=1001.2014.3001.5501
中,我们利用select in循环语句打造的菜单中,菜单项都是用系统设置的颜色配置来显示的。
为了让菜单更美观,我们想让每个菜单项分别以不同的颜色来显示,要如何实现呢?

2 打造彩色的选项菜单的方法

  1. 首先,我们把要显示的菜单项保存到一个数组中
  2. 然后,我们用循环语句 for in 来显示数组中的菜单项,在显示菜单时我们可以为每个菜单项加上一个数字序号作为选择该菜单的数字,并利用\e[xm (其中x的值为31-37)来实现彩色显示
  3. 接着,我们用read命令读取用户输入的数值。
  4. 最后,对用户输入的数值进行判断,并做相应的处理。

3 演示代码

我们显示一个水果菜单,并增加一个exit菜单选项

当用户输入数字n后,我们进行判断:

如果n 为水果菜单选项对应的数字,显示相应的水果

如果n为exit菜单选项的数字,显示用户选择了退出选项

否则,显示用户输入了错误的数字。

代码如下:

f=(apple banana orrange peach);# 定义水果数组
c=31;   # 颜色
o=1;    #序号
for i in $f;do
     echo -e "\e[${c}m $o)$i \e[0m"; #用不同颜色显示水果选项
     let c+=1;
     if [[ $c > 37 ]]; then
         $c=31;
     fi;
     let o+=1;
done;
     
echo " $o)exit"; # 显示 退出 选项

echo -n "enter the number before the fruit your liked(1 - ${#f}):"; #提示用户输入选项前的数字
read s; #读取用户输入的字符并存入s

if [[  $s -gt 0 && $s -le ${#f} ]]; then #用户输入的是水果选项
   let c=30+s;       #计算水果选项对应的颜色
   echo -e "You selected \e[${c}m$f[$s]\e[0m";#显示用户选择的水果选项
elif [[ $s -eq ((${#f}+1)) ]]; then # 用户选择的是退出选项
   echo You selected exit;#显示用户选择了退出选项
else
   echo Your enter a error number;#显示用户输入的错误的数字
fi 

3.1 创建 脚本文件a.sh

 用cp 命令来创建脚本文件,文件内容输入完后按Ctrl+D结束文件输入。

purpleEndurer @zsh $ cp /dev/stdin a.sh         
f=(apple banana orrange peach);# 定义水果数组
c=31;   # 颜色
o=1;    #序号
for i in $f;do
     echo -e "\e[${c}m $o)$i \e[0m"; #用不同颜色显示水果选项
     let c+=1;
     if [[ $c > 37 ]]; then
         $c=31;
     fi;
     let o+=1;
done;
     
echo " $o)exit"; # 显示 退出 选项

echo -n "enter the number before the fruit your liked(1 - ${#f}):"; #提示用户输入选项前的数字
read s; #读取用户输入的字符并存入s

if [[  $s -gt 0 && $s -le ${#f} ]]; then #用户输入的是水果选项
   let c=30+s;       #计算水果选项对应的颜色
   echo -e "You selected \e[${c}m$f[$s]\e[0m";#显示用户选择的水果选项
elif [[ $s -eq ((${#f}+1)) ]]; then # 用户选择的是退出选项
   echo You selected exit;#显示用户选择了退出选项
else
   echo Your enter a error number;#显示用户输入的错误的数字
fi 
purpleEndurer @zsh $ 

3.2  执行和测试脚本

purpleEndurer @zsh $. ./a.sh
 1)apple 
 2)banana 
 3)orrange 
 4)peach 
 5)exit
enter the number before the fruit your liked(1 - 4):3
You selected orrange
purpleEndurer @zsh $. ./a.sh
 1)apple 
 2)banana 
 3)orrange 
 4)peach 
 5)exit
enter the number before the fruit your liked(1 - 4):5
You selected exit
purpleEndurer @zsh $. ./a.sh
 1)apple 
 2)banana 
 3)orrange 
 4)peach 
 5)exit
enter the number before the fruit your liked(1 - 4):0
Your enter a error number
purpleEndurer @zsh $. ./a.sh
 1)apple 
 2)banana 
 3)orrange 
 4)peach 
 5)exit
enter the number before the fruit your liked(1 - 4):9
Your enter a error number
purpleEndurer @zsh $

 


http://www.kler.cn/a/146623.html

相关文章:

  • 干净卸载Windows的Node.js环境的方法
  • 学成在线_内容管理模块_创建模块工程
  • 《AI创造力的边界与机器人技术的现实困境:一个双重视角的探讨》
  • idea分支合并代码
  • c语言 --- 字符串
  • 【I/O编程】UNIX文件基础
  • 【Proteus仿真】【STM32单片机】感应水龙头设计
  • 枚举 组合数 P3799 妖梦拼木棒
  • MySQL--锁
  • NSGA-II求解微电网多目标优化调度(MATLAB)
  • 鼠标拖拽问题,不选中文本不触发单击事件
  • linux 搭建Nginx网页(编译安装)
  • OJ练习第186题——统计子串中的唯一字符
  • Python 进阶(十一):高精度计算(decimal 模块)
  • FTP服务器搭建
  • springBoot常见的问题
  • C++const指针的两种用法
  • 【SpringBoot3+Vue3】五【完】【实战篇】-前端(配合后端)
  • 学习课题:逐步构建开发播放器【QT5 + FFmpeg6 + SDL2】
  • springboot函数式web
  • 亚马逊云科技re:Invent大会:云计算与生成式AI共筑科技新局面,携手构建未来
  • ubuntu 安装 jetbrains-toolbox
  • 微服务保护 Sentinel
  • 知行之桥EDI系统HTTP签名验证
  • 自定义右键菜单栏
  • 使用Java连接Hbase