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 20:45
下一篇 2016-08-21 20:45

相关推荐

  • 文件系统的挂载使用总结

    文件系统使用 除根文件系统以外的文件系统创建后要使用需要先挂载至挂载点后才可以被访问,挂载点即分区设备文件关联的某个目录文件,挂载命令mount和 卸载命令umount; 挂载点: mount_point,作为被挂载的文件系统的访问入口; 作为挂载点需要满足三个条件:  (1)这个目录事先存在  (2)使用未被或不会被其他进程使用到的目录…

    系统运维 2016-11-19
  • Linux运维学习历程-第三天-初识Linux

    初识Linux 本章内容    初安装Linus的网络配置    防火墙的关闭    用户    终端    shell    命令纪要 安装linux之后,linux默认网卡开机不是自动激活,并且防火墙开启的,这对初期我们学习linux会…

    Linux干货 2016-08-03
  • day06(8-3)作业-文件权限

    第一题、三种权限rwx对文件和目录的意义     权限对文件的意义         r(read):可以读取文件的内容,如读取文本文件的内容         w(write):可以编辑、新增或者是修改文件的内容,但不含有删除文件(…

    Linux干货 2016-08-04
  • Linux磁盘管理

     I/O Ports:I/O设备地址   一切皆文件:             poen(),read(),write(),close()   设备类型:     &nb…

    Linux干货 2016-08-29
  • find命令详解

    find命令是用来在给定的目录下查找符合给定条件的文件   find [OPTIONS] [查找起始路径] [查找条件] [处理动作]   一、OPTIONS参数     -P、-L、-H:控制软连接的对待方式,用的不多。不介绍了   二、查找路径     就是个目录路径,相对和绝对都可以。   三、查找条件     (一)、根据名称查找       -na…

    Linux干货 2016-09-19
  • Linux 登录趣事

    初入Linux运维,在虚拟机VMware12中装载CentOS6和CentOS7,均带有图形化界面。简单熟悉Linux,发现了一些关于登录的趣事,在此与大家分享。 运行环境:CentOS6和CentOS7 工具:系统里的terminal 登录趣事(以CentOS6为例): (1)自动登录图形化界面 每次启动CentOS6,短暂等待之后便会进入登录界面,然后选…

    2017-07-15