本文属于《Linux Shell 系列教程》文章系列,该系列共包括以下 18 部分:
  1. Linux Shell系列教程之(一)Shell简介
  2. Linux Shell系列教程之(二)第一个Shell脚本
  3. Linux Shell系列教程之(三)Shell变量
  4. Linux Shell系列教程之(四)Shell注释
  5. Linux Shell系列教程之(五)Shell字符串
  6. Linux Shell系列教程之(六)Shell数组
  7. Linux Shell系列教程之(七)Shell输出
  8. Linux Shell系列教程之(八)Shell printf命令详解
  9. Linux Shell系列教程之(九)Shell判断 if else 用法
  10. Linux Shell系列教程之(十)Shell for循环
  11. Linux Shell系列教程之(十一)Shell while循环
  12. Linux Shell系列教程之(十二)Shell until循环
  13. Linux Shell系列教程之(十三)Shell分支语句case … esac教程
  14. Linux Shell系列教程之(十四) Shell Select教程
  15. Linux Shell系列教程之(十五) Shell函数简介
  16. Linux Shell系列教程之(十六) Shell输入输出重定向
  17. Linux Shell系列教程之(十七) Shell文件包含
  18. 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教程的更多相关文章

  1. Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重

    为了确保信息请求消息的到达率,微信服务器在没有及时收到响应消息(ResponseMessage)的情况下,会多次发送同一条请求消息(RequestMessage),包括MsgId等在内的所有文本内容都 ...

  2. 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    http://blog.csdn.net/poem_qianmo/article/details/26977557 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...

  3. 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...

  4. Linux时间子系统之(十四):tick broadcast framework

    专题文档汇总目录 Notes:BroadcastTick作为cpuidle的waker,硬件基础.BroadcastTick嵌入在当前系统Tick框架中.BroadcastTick设备初始化:周期性T ...

  5. iOS 11开发教程(十四)iOS11应用代码添加视图

    iOS 11开发教程(十四)iOS11应用代码添加视图 如果开发者想要使用代码为主视图添加视图,该怎么办呢.以下将为开发者解决这一问题.要使用代码为主视图添加视图需要实现3个步骤. (1)实例化视图对 ...

  6. Flask 教程 第十四章:Ajax

    本文翻译自The Flask Mega-Tutorial Part XIV: Ajax 这是Flask Mega-Tutorial系列的第十四部分,我将使用Microsoft翻译服务和少许JavaSc ...

  7. SpringBoot进阶教程(六十四)注解大全

    在Spring1.x时代,还没出现注解,需要大量xml配置文件并在内部编写大量bean标签.Java5推出新特性annotation,为spring的更新奠定了基础.从Spring 2.X开始spri ...

  8. 《sed的流艺术之四》-linux命令五分钟系列之二十四

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  9. NeHe OpenGL教程 第二十四课:扩展

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  10. NeHe OpenGL教程 第十四课:图形字体

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

随机推荐

  1. MUI框架开发HTML5手机APP(一)--搭建第一个手机APP(转)

    出处:http://www.cnblogs.com/jerehedu/p/7832808.html  前  言 JRedu 随着HTML5的不断发展,移动开发成为主流趋势!越来越多的公司开始选择使用H ...

  2. (KMP)Simpsons’ Hidden Talents -- hdu -- 2594

    http://acm.hdu.edu.cn/showproblem.php?pid=2594 Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Ja ...

  3. (KMP 模板)Number Sequence -- Hdu -- 1711

    http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/Other ...

  4. (快速幂)Key Set--hdu--5363

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=5363 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  5. hdu 5012 模拟+bfs

    http://acm.hdu.edu.cn/showproblem.php?pid=5012 模拟出骰子四种反转方式,bfs,最多不会走超过6步 #include <cstdio> #in ...

  6. Oracle EBS 采购 接收入库 接口开发

    http://blog.itpub.net/25164132/viewspace-746657/ 接收入库是项目中会经常碰到的开发,这类开发一般来说比较简单,但是接收入库在Oracle中其实涉及到很多 ...

  7. C# 调用C++ CLR dll类库时,实现从 string 到 sbyte* 的转换

    问题描述 今天在做项目的时候碰到一个问题,就是用C++编写CLR类库dll的时候,C++的函数参数列表中包含一个char*的输出型参数,然而在C#调用该dll时候,会自动将函数的中的char*参数“翻 ...

  8. 将Heap RID转换成RID格式

    使用DBCC PAGE命令查看索引叶子层中的索引键(最后一个参数为3才会显示索引键对应的HEAP RID)时,可以使用下面的SQL将HEAP RID转换成 FileId:PageId:SlotNo的格 ...

  9. Jersey Client传递中文参数

    客户端需要客户端的包: <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jerse ...

  10. dstat常用参数组合

    io/if/vm三合一 dstat -cdlmnpsy dstat --top-mem --top-cpu --top-io