bash脚本编程之select语法详解

shell编程之select

select控制结构(在tcsh中不可用)基于Korn Shell中的控制结构 select语句首先显示一个菜单,然后根据用户的选择给变量赋予相应的值,最后执行一系列命令

其语法如下:

select varname in list

do

commands

done

select 表达式是一种bash的扩展应用,动作包括: 自动用1,2,3,4列出菜单 (没有echo指令,自动显示菜单) 自动read输入选择 (没有 read指令,自动输入) 赋值给变量 (没有赋值指令,自动输入数字后,赋值字符串给变量)

select结构显示arg项的菜单。加入忽略关键字in和参数列表,select控制语句就用位置参数来取代arg项。select的菜单格式化为在每一项前加一个数字select结构用变量LINES和变量COLUMNS的值来确定显示区的大小(LINES的默认值为24,COLUMNS的默认值为80)。

在select语句输出菜单后,它就会显示出PS3的值,select提示符PS3的默认值为“?#”,但一般将其设置为一个更有意义的值。

在PS3提示符后输入一个合法的数字(在菜单范围中),select语句就把varname设置为与该数字对应的参数。非法的输入会使shell把varname设置为空,在这两种情况下,select将把用户的响应存储在关键字变量REPLY中,然后执行do与done之间的命令。若只按RETURN键而没有做任何选择,shell就会重新显示菜单和PS3提示符。

举例说明:

脚本:

8 #!/bin/bash
  9 PS3="What sports do you like?"
 10 select menu in basketball football tableball
 11 do
 12 case $menu in
 13 basketball)
 14 echo "$menu" is your favorite sport!
 15 ;;
 16 football)
 17 echo "$menu" is your favorite sport!
 18 ;;
 19 tableball)
 20 echo "$menu" is your favirite sport!
 21 ;;
 22 *)
 23 echo "Your input is false!"
 24 break
 25 ;;
 26 esac
 27 done

执行结果:

[root@localhost bin]# select.sh 
1) basketball
2) football
3) tableball
What sports do you like?basketball
Your input is false!
[root@localhost bin]# select.sh
1) basketball
2) football
3) tableball
What sports do you like?1
basketball is your favorite sport!
What sports do you like?2
football is your favorite sport!
What sports do you like?3
tableball is your favirite sport!
What sports do you like?g
Your input is false!

原创文章,作者:YOUNG,如若转载,请注明出处:http://www.178linux.com/39003

(0)
YOUNGYOUNG
上一篇 2016-08-24 21:22
下一篇 2016-08-24 21:22

相关推荐

  • grep、egrep、fgrep 正则表达式详解

    大纲一、grep分类       –1.1基本定义       –1.2常用选项       –1.3不常用选项二、正则表达式       –2.1基本…

    Linux干货 2015-07-01
  • Linux磁盘管理

    面对一块硬盘,我们该如何使用它呢?本文从机械硬盘结构,分区,格式化,和挂载四个层次进行介绍。 一、机械硬盘结构 现在服务器使用机械式硬盘是主流,因为其造价低,容量大,和固态硬盘相比读写性能要差很多。机械硬盘主要由以下几个部件构成:转轴Spindle,盘片Platter,机械臂Boom,磁头Head。工作机制是马达带动盘片高速旋转,磁头对盘片进行擦写数据或读取…

    Linux干货 2016-09-01
  • locate与find不得不说的事

    本文内容: locate与find 练习     locate与find是linux中最常用的两种查找方式,二者各有优缺点,locate查找迅速,却由于数据库非实时更新,导致可能查找不全,而find由于是从指定路径开始遍历,速度相对较慢,却更为准确,而且用法也更加灵活,因此find运用更加广泛,也是本文的重点。 文件查找: locate搜…

    Linux干货 2016-08-18
  • openssl关于CA证书的创建

    1、用openssl实现证书申请 先在/etc/pki/CA/目录下创建一个index.txt的文件,作为ca证书的数据库 在相同目录下创建一个serial的序列号文件,并写入01 生成ca的签名证书用到的私钥文件 注意:私钥的权限时600,文件名必须是cakey.pem 生成自签证书 这样私有CA建立完成 申请认证: 在申请的机器上生成私钥 生成申请文件 …

    Linux干货 2016-09-23
  • 正则表达式基础

    正则表达式正则表达式    元字符:        .       点表示任意单个字符 最少一次        \w      匹配字母、数字、下划线、或汉字。        \s      匹配任意空白字符        \d      匹配数字        \b      匹配字符的开始或结束        ^       匹配首字符        $…

    Linux干货 2017-11-14
  • 三大家族轻松管理CentOS 7网络属性配置

    一、简单介绍        在CentOS 7中对网络管理还是有不少变化的,例如管理服务的命令变为systemctl,许多命令可以更改后直接生效,还有许多独有的工具,本文以CentOS 6与CentOS 7对比进行讲解,下面现总体介绍一下网络属性配置工具。    &nb…

    Linux干货 2016-04-25