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

相关推荐

  • 架构师第一天之:Nginx

    nginx: 诞生背景: prefork机制不能支持过大的并发请求, C10K问题的解决 官方站点: http://nginx.org 二次开发版: tengine,openresty 特性: 模块化设计,较好的拓展性 高可靠性:master/worker架构 支持热部署:不停机更新配置文件,更换日至文件,更新服务器版本 低内存消耗:10000个keep-a…

    Linux干货 2016-10-29
  • 26期全程班-第一周博客作业

    1、描述计算机的组成与功能。 计算机由以下五大单元组成: 一:CPU的算法计算和逻辑判断单元; 二:CPU的控制单元;协调各设备协同工作。 三:内存:RAM(random accace memory)随机读取内存;数据处理的必经路段。 四:输入设备:键盘、鼠标等;负责数据的输入。 五:输出设备:屏幕、终端、文件、硬盘等;负责数据的输出 2、按系列罗列Linu…

    Linux干货 2016-12-30
  • 文本处理工具练习题(包含正则)

    正则练习题(包含文本处理练习题) 问题 找出ifconfig命令结果中本机的所有IPv4地址  查出分区空间使用率的最大百分比值 查出用户UID最大值的用户名、UID及shell类型 查出/tmp的权限,以数字方式显示 统计当前连接本机的每个远程主机IP的连接数,并按从大 到小排序 答; ifconfig | grep -o '[0-9]\…

    Linux干货 2016-08-08
  • linux的管道命令和用户管理命令

    1、列出当前系统上的所有已经登录的用户的用户名 [root@localhost home]# who | cut -d” ” -f1 | uniq root test root 2、取出最后登录到当前系统的用户相关信息 [root@localhost home]# who | tail -1 root pts/3 2017-07-16 19:38 (192.…

    Linux干货 2017-07-17
  • MySQL or MariaDB 简介

    DBMS:数据库管理系统 RDBMS:关系型数据库管理系统    总之:他们都是一个数据管理程序;大多都是CS架构,都有专门的通信协议进行数据交换 关系模型:               表(行或者列):二维关系 设计范式:       &…

    Linux干货 2017-01-12
  • 第四周

    第四周 1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。 [root@node1 ~]# cp -r /etc/skel/ /home/tuser1 [root@node1 ~]# chmod -R go= /home/tuser1 [root@node1 ~]# ls -…

    Linux干货 2017-07-26