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
下一篇 2016-08-24

相关推荐

  • Linux之初见

     前言        第一次听到Linux的大名是在进行网络培训的时候,隔壁的红帽子培训时听到的。由于这样,导致我很长一段时间都以为Linux就是红帽,红帽就是Linux,当听到Ubantu的时候,还以为又是另一个全新的,区别于windows和Linux的版本,现在想起来很是羞愧。近期因为…

    Linux干货 2016-02-14
  • Linux进程及管理(1)

    Linux进程及管理(1) 内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能 Process: 运行中的程序的一个副本; 存在生命周期Linux内核存储进程信息的固定格式:task struct 多个任务的的task struct组件的链表:task list 进程创建: init 父子关系 进程:都由其父进程创建 fork(), cl…

    Linux干货 2015-05-28
  • ldirectord 结合ipvsadm 配置nat,dr模型

    ldirectord 结合ipvsadm 配置nat,dr模型  一、nat模型 1、 drector # wget ftp://172.16.0.1/pub/Sources/7.x86_64/crmsh/ldirectord-3.9.6-0rc1.1.1.x86_64.rpm # yum -y install nginx (同时用于做为sorry…

    Linux干货 2014-01-03
  • N26-第一周

    描述计算机的组成及功能。 计算机主要由运算器,控制器,存储器,输入、输出设备五大部件组成 运算器(Arithmetic Logic Unit, ALU):实现各种算数运算和逻辑运算(与控制器组成cpu)。 控制器(Control Unit, CU):计算机控制中心,根据程序规定的控制程序进行解释,根据要求进行调度,控 制协调各部分有条不紊的运行。 存储器(M…

    Linux干货 2017-02-03
  • 马哥教育网络班21期+第19周课程练习

    1、描述Tomcat的架构; Tomcat组件,分为4类: 顶层类组件:包括<Server>元素和<Service>元素,它们位于整个配置文件的顶层; 连接器类组件:为<Connector>元素,代表介于客户端与服务器端之间的通信接口,负责将客户端的请求发送给服务器端,并将服务器的响应结果返回给客户端; 容器类组件:代表处…

    Linux干货 2016-12-05
  • 第六周作业

    vim文本编辑器基本用法     基本模式:         编辑模式,命令模式    输入模式        末行模式:    …

    Linux干货 2016-09-19