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

相关推荐

  • grep命令及正则表达式

    grep命令和正则表达式 grep基本概念 grep:global search regular expression and print out the line. 作用:文本过滤器,用于文本搜索,用指定“模式”逐行匹配。 模式:由正则表达式字符及文本字符所编写的过滤条件 正则表达式:由一类特殊字符和文本字符所编写的模式,其有些字符不表示字符字面意义,而表…

    Linux干货 2016-11-05
  • LVM逻辑卷管理练习

         小编今天要讲的内容是如何创建逻辑卷,然后扩展它、缩减它。LVM 的重点就在于可以弹性的调整文件系统的容量!所以,下面练习开始。 1、创建一个至少有两个PV组成的大小为20G的名为testvg的 VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻 辑卷testlv;挂载至/users目录。 ①准备两个10G的…

    2017-08-26
  • linux运维

    linux运维大纲,学习路线图

    Linux干货 2017-10-21
  • sed编辑器使用

     简述       sed编辑器被称作流编辑器,和普通的交互式文本编辑器恰好相反。在交互式文本编辑器中(比如vim), 你可以用键盘命令来交互式地插入、删除或替换数据中的文本。流编辑器则会在编辑器处理数据之前基于预先 提供的一组规则来编辑数据流。sed编辑器可以根据命令来处理数据流中的数据,这些命令…

    2017-06-19
  • 用shell脚本实现每天定时收集全网日志到一台服务器

    需求 现在公司有这样一个需求,需要收集每天全网运行业务的设备上的某个特定目录底下的日志到一台服务器(这台服务器我们简称logserver),这并在这台logserver上生成以日期为名字的目录 解决思路: 在logserver的crontab里设置两个脚本,在当日晚上23:30执行脚本1收集当日即将被删除的全网脚本;在并在早上8:30执行脚本2,收集昨日全网…

    Linux干货 2015-07-27
  • python-多进程

    进程是由系统自己管理的。 1:最基本的写法 from multiprocessing import Pool def f(x):     return x*x if __name__ == '__main__': &nb…

    Linux干货 2016-11-05