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

相关推荐

  • shell脚本编程2

    八、条件选择if语句     注:if语句可嵌套     单分支         if 判断条件;then        &nbs…

    Linux干货 2016-08-22
  • quota AND raid

    1.磁盘配额 将home目录独立出来单独的分区,限制用户的使用。 (1)先创建分区,如下图的分区sda6 (2)命令同步系统的新增加分区:partx –a /dev/sda (3)命令格式化新分区:     (4)把创建的设备挂载到/mnt/home下    (5)迁移数据,移动之前要确保home分区没有使用。权限是保…

    Linux干货 2016-09-19
  • Linux网络属性配置的几个命令

    Linux网络属性配置命令 ifcfg命令家族:ifconfig,route,netstat ifconfig命令:接口及地址查看和管理 ifconfig [INTERFACE] #ifconfig -a : 显示所有接口,包括inactive状态的接口 ifconfig interface [aftype] options | address … #i…

    Linux干货 2017-05-09
  • rpm管理包

    rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。接下来聊一聊如何安装、卸载、查询、检验rpm类的软件。 安装:…

    2017-08-19
  • Linux之网络管理

    Linux之网络管理     在学习linux的过程中,Linux网络的管理和配置中是很重要的,几乎学习的后期都离不开网络的概念和配置,如集群中的使用,学习好Linux网络至关重要。     Linux网络IP地址有两种配置方式:静态指定和动态分配 动态分配就是利用DHCP服务器,动态的给linux主机分配IP地址。静…

    Linux干货 2016-09-05
  • 常见的文本处理工具及正则表达式的相关知识

    1.cat命令使用详解 cat [option]… [file]… -A equivalent=vET -b 非空行编号 -E 行为显示$ -n 显示所有行的行号 -s 行号并压缩连续空行为一行 -T 显示tab为^M 实例:显示a文件的行号及所有控制符 2.(1)head使用详解 head -n x 显示前x行 head -c x …

    Linux干货 2016-08-07