Select、Case

select循环与菜单

select循环主要用于创建菜单,按数字排序list指定的顺序排序,并列出在标准输出,利用PS3列出提示符进行输入选择

用法:

select VARIABLE in list
 do
    循环体命令
done

PS3提示语定义:

在脚本中脚本代码的第一行加入即可

PS3=“提示语”

用户输入相应的数字,就会执行相对应的命令,用户输入的选项被保存在REPLY中

select经常和case配合使用,一个指定菜单,一个执行菜单指定的相对应的命令。

select是个无限循环,因此要记住用break命令退出循环,或者用exit命令结束脚本运行。

select与for循环类似,可以省略inlist,此时在执行脚本是指定参数为位置变量传给select语句。

##############################################################################################################

多分支case语句

case语句和if elif else 语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if else 语句可以判断多种条件关系

用法:

case  $VARIABLE(变量名) in
    “值1”)
        ;;
    “值2”)
        ;;
    …………
esac

case语句支持glob风格的通配符进行模糊匹配(应用在“值1”|“值2"…..)

*:任意长度的任意字符

?:任意单个字符

[] : 指定范围内的任意单个字符

a|b:条件1或条件2

select与case综合示例:输入指定命令,显示对应的信息

#!/bin/bash
#
######定义函数开始##############

meminfo() {
    clear
    free -m
}
diskinfo() {
    clear
    df -k
}
logged() {
    clear
    who
}
######定义函数结束##############

######PS3定义提示语##############
PS3="input option (input "5" is help) :"

########select语句定义菜单列表#########
select opt in "display meminfo" "display diskinfo" "display logged user" "Exit program" "help";do
    case $opt in       
   //应用case语句,变量是select语句定义的菜单变量,case语句会一一进行匹配select的变量中的值
        "display meminfo")   //注意菜单上的名称必须与case语句选项一致
            meminfo ;;         //调用相对应的函数
        "display diskinfo")    //如果select的值对应到此值,则指定相对应的函数程序
            diskinfo ;;      
       //双分号(;;)为语句结束符,如果此语句匹配到依旧不退出,继续向下匹配
        "display logged user")
            logged ;;
        "Exit program")
            break ;;
        "help")
            echo "Usage (1.mem|2.disk|3.loguser|4.exit|5.help)"
        ;;
        *)     //如果上方所有case语句都不能匹配到,则执行此条程序命令。
            echo "sorry,Error input!" ;;
     esac   //case语句结束
done      //select语句结束

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

(0)
LiiLii
上一篇 2016-08-21
下一篇 2016-08-21

相关推荐

  • M20-1权限作业

    1、当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作? [root@centos7 testdir]# ls -ld /testdir/ drwxr-xrw-. 3 root root 27 Aug  5 0…

    Linux干货 2016-08-05
  • Linux发展与应用

                                                      &nbsp…

    2017-04-05
  • nginx服务

      Nginx 提供web服务,也是工作在应用层的负载均衡器,拥有强大的缓存能力。 本章主要学习,web server、web reverse proxy(http)和cache 缓存服务器使用较多的是varnish+squid: 任何缓存都是反向代理,但是varnish反向代理能力还是与nginx有很大差距。所以,varnish还是做缓存服务,而…

    Linux干货 2016-11-01
  • UEFI与GPT(7.3课上作业)

    一、UEFI:统一可扩展固件接口 1、什么是UEFI         统一可扩展固件接口(Unified Extensible Firmware Interface,UEFI)是一种PC系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS的替代方案。UEFI负责加电自…

    Linux干货 2016-07-12
  • shell 脚本之数组 和 yum 【下】

    shell 脚本之数组 和 yum 【下】 数组   变量:存储单个元素的内存空间   数组:存储多个元素的连续的内存空间,相当于多个变量的 集合。   数组名和索引        索引:编号从0开始,属于数值索引        注意:索引可支…

    Linux干货 2016-08-24
  • 安装CentOS 6.9

    安装完VMvare,VMware可以运行虚拟机,虚拟机就相当于一台电脑,然后我们在这台电脑上安装Linux系统,我们这次介绍安装CentOS 6.9的过程 1.打开VMware,依照下图步骤安装     首先我们需要创建新的虚拟机,然后配置出适合自己物理机的虚拟机 2.点击典型类型安装     这里推荐使用典…

    2017-07-12