【shell】How can I create a select menu in a shell script?
select in 循环用来增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能。
select in 是 Shell 独有的一种循环,非常适合终端(Terminal)这样的交互场景,C语言、C++、Java、Python、C# 等其它编程语言中是没有的。
#?用来提示用户输入菜单编号;^D表示按下 Ctrl+D 组合键,它的作用是结束 select in 循环。
运行到 select 语句后,取值列表 value_list 中的内容会以菜单的形式显示出来,用户输入菜单编号,就表示选中了某个值,这个值就会赋给变量 variable,然后再执行循环体中的 statements(do 和 done 之间的部分)。
每次循环时 select 都会要求用户输入菜单编号,并使用环境变量 PS3 的值作为提示符,PS3 的默认值为#?,修改 PS3 的值就可以修改提示符。
如果用户输入的菜单编号不在范围之内,那么就会给 variable 赋一个空值;如果用户输入一个空值(什么也不输入,直接回车),会重新显示一遍菜单。
注意,select 是无限循环(死循环),输入空值,或者输入的值无效,都不会结束循环,只有遇到 break 语句,或者按下 Ctrl+D 组合键才能结束循环。
# vim select.sh
#########################################
#!/bin/bash
#功能描述(Description):根据用户选择的菜单实现对应的功能.
echo "请根据提示选择一个选项."
PS3="Please input your choice:"
select item in "CPU" "IP" "MEM" "exit"
do
case $item in
"CPU")
uptime;;
"IP")
ip a s;;
"MEM")
free;;
"exit")
exit;;
*)
echo error;;
esac
break
done
echo "Your choice is $item."
##########################################
PS 是 prompt statement (提示表达式)的缩写。
PS1 – Default interaction prompt
PS2 – Continuation interactive prompt
PS3 – Prompt used by “select” inside shell script
PS4 – Used by “set -x” to prefix tracing output
PROMPT_COMMAND – Bash shell executes the content of the PROMPT_COMMAND just before displaying the PS1 variable.
bash中的PS1、 PS2、PS3、PS4和PROMPT_COMMAND详解
https://via.hypothes.is/https://blog.51cto.com/kusorz/1968827
Bash Shell: Take Control of PS1, PS2, PS3, PS4 and PROMPT_COMMAND
https://via.hypothes.is/https://www.thegeekstuff.com/2008/09/bash-shell-take-control-of-ps1-ps2-ps3-ps4-and-prompt_command
Unix / Linux Shell - The select Loop
https://via.hypothes.is/https://www.tutorialspoint.com/unix/select-loop.htm
shell编程中select语句的使用
https://blog.csdn.net/m0_37556444/article/details/82915966
Shell select in循环详解
https://via.hypothes.is/http://c.biancheng.net/view/2829.html
select loop
https://via.hypothes.is/https://bash.cyberciti.biz/guide/Select_loop
Linux shell中case与select语句
https://blog.51cto.com/11555417/2165029?source=dra
md5sum 和 sha256sum用于 验证软件完整性
https://www.cnblogs.com/xuyaowen/p/md5sum_sha256_usages.html
【shell】How can I create a select menu in a shell script?相关推荐
- 【Mysql】EVENT 使用基础 - Create Event
目录 [Mysql]EVENT 使用基础 - Create Event [Mysql]EVENT 使用基础 - Alter Event [Mysql]EVENT 使用基础 - Drop Event [ ...
- 【Linux】30.ssh不用手动输入密码登录终端sshpass 和 shell脚本后跟参数自动匹配case的用法
ssh不用手动输入密码登录终端sshpass 和 case的组合用法 1.sshpass 的用法 在第一次手动输入密码ssh mdc@172.16.34.17 登陆上终端后,可以把下面两条语句做成sh ...
- 【c++】factory的使用:create和destory,以cicadaplayer的render实现为例
webrtc里大量的factory 用来屏蔽具体impl 来创建某一抽象类的过程 cicadaplayer也使用了,调用方只需要使用create方法就可以创建 create方法可以传递参数的. 调用 ...
- 【Linux】ln: failed to create symbolic link ‘*.so’: Operation not supported
问题 ln: failed to create symbolic link '*.so': Operation not supported 总结 在Linux虚拟机与windows主机进行文件共享,将 ...
- 【Liunx】进程的程序替换——自定义编写极简版shell
目录 进程程序替换[1~5] 1.程序替换的接口(加载器) 2.什么是程序替换? 3.进程替换的原理 4.引入多进程 5.系列程序替换接口的详细解析(重点!) 自定义编写一个极简版shell[6~8] ...
- 【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 参考 Script#evaluate 方法 | 创建 Binding 对象并设置 args 参数 )
文章目录 一.Groovy 类中调用 Groovy 脚本 1.参考 Script#evaluate 方法分析 Groovy 类中调用 Groovy 脚本 2.创建 Binding 对象并设置 args ...
- 【c++】26.浅谈“事件驱动”、select、poll、epoll
浅谈"事件驱动" 1.通常,我们设计一个事件处理模型的程序有两种思路: 一种是通过轮询的方式; 一种通过事件驱动的方式,事件驱动方式也被称为消息通知方式. 下面举个简单收信的例子, ...
- 【转】ABP源码分析三十七:ABP.Web.Api Script Proxy API
ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理,AngularJs代理以及TypeScriptor代理.这些个代理就是j ...
- 【NOTE】python3.6下scons运行提示找不到SCons.Script解决方式
一.问题&错误信息: 在python3.6.1环境下通过scons-3.3.0编译最新的mongodb-src-r3.6.0-rc报错: ImportError:No module named ...
最新文章
- this指针的用法详解
- python求非线性优化问题_用python优化非线性函数
- JavaScript抽象类及Class.create备忘
- canvas绘制竖排的数字_Python绘制可爱的卡通人物 | 【turtle使用】
- 老电脑linux内核,如何删除废旧的Linux内核(kernel)
- PyOpenCV 实战:借助视觉识别技术实现围棋终局的胜负判定
- 亚马逊Alexa已接入2万种设备,22岁开发者月入1万美元
- 数据结构--变长数组
- 大数据学习---HIVE入门SQL学习
- Java——NIO和IO的区别
- 个人信息安全规范----2、个人信息安全基本原则
- 20年中国人均GDP排名变化
- 查询数据表中重复数据及重复次数
- JS一些常用证件信息的正则表达式
- POS标记——HMM模型
- python下载详细教程
- html语言的title在哪,网页中title标题使用地方有哪些
- 前端axios下载excel文件(二进制)的处理方法
- 运筹学那些事,专科学生学习运筹学之马尔柯夫分析,No.8
- 【Django 开发】面试招聘信息网站(用户登录注册投在线递简历)