(转)Linux Shell系列教程之(十四) Shell Select教程
- Linux Shell系列教程之(一)Shell简介
- Linux Shell系列教程之(二)第一个Shell脚本
- Linux Shell系列教程之(三)Shell变量
- Linux Shell系列教程之(四)Shell注释
- Linux Shell系列教程之(五)Shell字符串
- Linux Shell系列教程之(六)Shell数组
- Linux Shell系列教程之(七)Shell输出
- Linux Shell系列教程之(八)Shell printf命令详解
- Linux Shell系列教程之(九)Shell判断 if else 用法
- Linux Shell系列教程之(十)Shell for循环
- Linux Shell系列教程之(十一)Shell while循环
- Linux Shell系列教程之(十二)Shell until循环
- Linux Shell系列教程之(十三)Shell分支语句case … esac教程
- Linux Shell系列教程之(十四) Shell Select教程
- Linux Shell系列教程之(十五) Shell函数简介
- Linux Shell系列教程之(十六) Shell输入输出重定向
- Linux Shell系列教程之(十七) Shell文件包含
- Linux Shell 系列教程目录
系列详情请看:《Linux Shell 系列教程》:
Linux Shell 系列教程,欢迎加入Linux技术交流群:479935456
原文:https://www.linuxdaxue.com/linux-shell-select-command.html
Select 搭配 case来使用,可以完成很多复杂的菜单控制选项。
select和其他流控制不一样,在C这类编程语言中并没有类似的语句,今天就为大家介绍下Shell Select语句的用法。
一、Shell Select语句语法
Shell中Select语句的语法如下所示:
select name [in list ]
do
statements that can use $name...
done
说明:select首先会产生list列表中的菜单选项,然后执行下方do…done之间的语句。用户选择的菜单项会保存在$name变量中。
另外:select命令使用PS3提示符,默认为(#?);
在Select使用中,可以搭配PS3=’string’来设置提示字符串。
二、Shell Select语句的例子
还是老样子,通过示例来学习Shell select的用法:
#!/bin/bash
#Author:linuxdaxue.com
#Date:2016-05-30
#Desc:Shell select 练习
PS3='Please choose your number: ' # 设置提示符字串.
echo
select number in "one" "two" "three" "four" "five"
do
echo
echo "Your choose is $number."
echo
break
done
exit 0
说明:上面例子给用户呈现了一个菜单让用户选择,然后将用户选择的菜单项显示出来。
这是一个最基本的例子,主要为大家展示了select的基础用法。当然,你也可以将break去掉,让程序一直循环下去。
下面是去掉break后输出:
$./select.sh
1) one
2) two
3) three
4) four
5) five
Please choose your number: 1 Your choose is one. Please choose your number: 2 Your choose is two. Please choose your number: 3 Your choose is three. Please choose your number: 4 Your choose is four. Please choose your number: 5 Your choose is five.
然后我们将例子稍稍修改下,加入case…esac语句:
#!/bin/bash
#Author:linuxdaxue.com
#Date:2016-05-30
#Desc:Shell select case 练习
PS3='Please choose your number: ' # 设置提示符字串.
echo
select number in "one" "two" "three" "four" "five"
do
case $number in
one )
echo Hello one!
;;
two )
echo Hello two!
;;
* )
echo
echo "Your choose is $number."
echo
;;
esac
#break
done
exit 0
这样的话,case会对用户的每一个选项进行处理,然后执行相应的语句。输出如下:
$./select2.sh
1) one
2) two
3) three
4) four
5) five
Please choose your number: 1
Hello one!
Please choose your number: 2
Hello two!
Please choose your number: 3 Your choose is three. Please choose your number: 4 Your choose is four.
将这些语句进行修改拓展,就可以写出非常复杂的脚本。怎么样,是不是非常强大呢,赶快试试吧!
更多Linux Shell教程请看:Linux Shell系列教程
(转)Linux Shell系列教程之(十四) Shell Select教程的更多相关文章
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重
为了确保信息请求消息的到达率,微信服务器在没有及时收到响应消息(ResponseMessage)的情况下,会多次发送同一条请求消息(RequestMessage),包括MsgId等在内的所有文本内容都 ...
- 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
http://blog.csdn.net/poem_qianmo/article/details/26977557 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...
- 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...
- Linux时间子系统之(十四):tick broadcast framework
专题文档汇总目录 Notes:BroadcastTick作为cpuidle的waker,硬件基础.BroadcastTick嵌入在当前系统Tick框架中.BroadcastTick设备初始化:周期性T ...
- iOS 11开发教程(十四)iOS11应用代码添加视图
iOS 11开发教程(十四)iOS11应用代码添加视图 如果开发者想要使用代码为主视图添加视图,该怎么办呢.以下将为开发者解决这一问题.要使用代码为主视图添加视图需要实现3个步骤. (1)实例化视图对 ...
- Flask 教程 第十四章:Ajax
本文翻译自The Flask Mega-Tutorial Part XIV: Ajax 这是Flask Mega-Tutorial系列的第十四部分,我将使用Microsoft翻译服务和少许JavaSc ...
- SpringBoot进阶教程(六十四)注解大全
在Spring1.x时代,还没出现注解,需要大量xml配置文件并在内部编写大量bean标签.Java5推出新特性annotation,为spring的更新奠定了基础.从Spring 2.X开始spri ...
- 《sed的流艺术之四》-linux命令五分钟系列之二十四
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- NeHe OpenGL教程 第二十四课:扩展
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第十四课:图形字体
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
随机推荐
- python将字典中的数据保存到文件中
d = {'a':'aaa','b':'bbb'}s = str(d)f = open('dict.txt','w')f.writelines(s)f.close()
- 百度地图(icon,zIndex)
百度地图v2.0参考http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html#a3b2 覆盖物(Marker) Icon: va ...
- spring AbstractRoutingDataSource实现动态数据源切换
使用Spring 提供的 AbstractRoutingDataSource 实现 创建 AbstractRoutingDataSource 实现类,负责保存所有数据源与切换数据源策略:public ...
- VMware Workstation 12 OpenGL ES版本支持情况与设置
概述 开始学习Opengl时,发现VMware Workstation虚拟机无法运行Opengl ES2.0的程序.后来,经过查找最终得知,是因为VMware Workstation11及之前的版本对 ...
- MFC中开发ocx控件,html容器收不到ocx的事件Event
问题背景: MFC开发ocx控件,主窗口就是ctrl类,主窗口类中调度接口和事件映射添加,执行OK,外部html容器中接收事件成功,如下: ctrl.h中声明事件映射函数 void EVTPENSIG ...
- memcached分布式缓存系统
在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活.此时 ...
- Thread in depth 3:Synchronization
Synchronization means multi threads access the same resource (data, variable ,etc) should not cause ...
- .net core2.0 codefirst 创建数据库的问题!
appsettings.json和Startup.cs就不记录了,网上很多!! 1.必须在有DbContext类的项目里添加这3个NuGet引用 Microsoft.EntityFrameworkCo ...
- JAVA 从头开始<二>
一.JAVA_HOME 1.环境变量如果经常变更,就要经常操作到Path,可能会一不小心把什么东西给删了 2.最好新建一个环境变量 3.如果使用新环境变量 ①原来的写法 ②现在的写法 新建环境变量JA ...
- 机器学习、深度学习、和AI算法可以在网络安全中做什么?
本文由 网易云发布. 本文作者:Alexander Polyakov,ERPScan的首席技术官和联合创始人.EAS-SEC总裁,SAP网络安全传播者. 现在已经出现了相当多的文章涉及机器学习及其保 ...