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

相关推荐

  • 新建用户的全​程解析

     新建用户的全程解析: 1,编辑passwd文件,添加newuser用户一行  nano /etc/passwd  newuser:x:2000:2000:NEWUSER:/home/newuser:/bin/bash  2,编辑group文件,添加newuser组一行 &nbs…

    系统运维 2016-08-05
  • Linux创建CA和申请认证

    Linux创建CA和申请认证 背景: 在学习Linux运维中,学习到了CA的创建和申请认证,为了加深对CA的理解,这里做一个创建CA和申请认证的实验并记录下来供以后回顾。 介绍: 什么是CA认证? 电子商务认证授权机构(CA, Certificate Authority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任…

    2017-09-09
  • 磁盘管理2

        centos6 实现loop 设备和文件关联         dd if=/dev/zero of=/testdir/bigfile bs=1M count=500      &nb…

    Linux干货 2016-09-01
  • 随笔

    GREP正则表达式: 复习: glob文件通配符:     *:任意长度字符:     ?:任意单个字符:     []:括号内的任意单个字符:     [^]:括号内字符除外:  &nbs…

    Linux干货 2016-07-16
  • LINUX-echo命令

    echo命令:回显         语法:echo [-neE][字符串]     说明:echo会将输入的字符串送往标准输出。输出的字符串间         以空白字符隔开,并在最后加上换行号。   &nbs…

    Linux干货 2017-05-22
  • linux 启动文件 /etc/fstab 文件删除 无法开机 修复的方法

    /etc/fstab文件删除系统自检无法挂载 无法启动 按照提示进入命令行  手动写/etc/fstab,如无内核文件  无grub  就缺啥补啥 fdisk    -l 查看当前分区  blkid    查看分区文件系统的卷标 手动挂载 …

    Linux干货 2016-09-13