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

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

1 需求分析

Linux shell编程学习笔记21:用select in循环语句打造菜单

中,我们利用select in循环语句打造的菜单中,菜单项都是用系统设置的颜色配置来显示的。

为了让菜单更美观,我们想让每个菜单项分别以不同的颜色来显示,要如何实现呢?

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

首先,我们把要显示的菜单项保存到一个数组中

然后,我们用循环语句 for in 来显示数组中的菜单项,在显示菜单时我们可以为每个菜单项加上一个数字序号作为选择该菜单的数字,并利用\e[xm (其中x的值为31-37)来实现彩色显示

接着,我们用read命令读取用户输入的数值。

最后,对用户输入的数值进行判断,并做相应的处理。

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; #读取用户输入的字符并存入sif [[  $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 $

image.png

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 $

image.png

目录
打赏
0
1
2
1
57
分享
相关文章
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
2月前
|
Linux编程: 在业务线程中注册和处理Linux信号
本文详细介绍了如何在Linux中通过在业务线程中注册和处理信号。我们讨论了信号的基本概念,并通过完整的代码示例展示了在业务线程中注册和处理信号的方法。通过正确地使用信号处理机制,可以提高程序的健壮性和响应能力。希望本文能帮助您更好地理解和应用Linux信号处理,提高开发效率和代码质量。
57 17
|
2月前
|
Linux编程: 在业务线程中注册和处理Linux信号
通过本文,您可以了解如何在业务线程中注册和处理Linux信号。正确处理信号可以提高程序的健壮性和稳定性。希望这些内容能帮助您更好地理解和应用Linux信号处理机制。
63 26
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
157 13
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
11月前
|
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
135 0
|
11月前
|
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
155 0
|
11月前
|
Linux 之大数据定制篇-Shell 编程
Linux 之大数据定制篇-Shell 编程
235 0
【Linux】shell编程基础(超详细,入门看这一篇就够了)(下)
【Linux】shell编程基础(超详细,入门看这一篇就够了)(下)
124 0
Linux操作系统实验七 Shell编程之循环程序编程(下)
Linux操作系统实验七 Shell编程之循环程序编程(下)
225 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等