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

相关推荐

  • N25-第十周博客作业

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 内核空间的启动流程 一. POST 加电自检 在加电之后,智能设备所运行的内部存储的一系列检测程序集合。缩写为POST。这些检测程序在软件加载到硬件上运行之前对硬件的基本完整性加以验证。 用于实现POST的代码在主板上ROM(CMOS)芯片上。 二. Boot Sequence(BI…

    Linux干货 2017-03-25
  • 初学Linux之文本处理工具和正则表达

    1、各种文本工具来查看、分析、统计文本 
    2、grep 
    3、正则表达式和扩展正则表达式 
    4、egrep

    2017-12-09
  • N26_第二周

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 a 文件查看类  cat tac  head  tail more  less b 文件操作类  touch cp  mv  rm more命令:   &nbsp…

    2017-05-26
  • N28-第三周

    1. 列出當前系統上所有已經登入的用戶的用戶名,注意:同一個用戶登入多次,則只顯示一次即可。
    2. 取出最後登入到當前系統的用戶的相關信息。
    3. 取出當前系統上被用戶當做其默認shell的最多的那個shell。
    4. 將/etc/passwd中的第三個字段數值最大的後10個用戶的信息全部改為大寫後保存至/tmp/maxusers.txt文件中。
    5. 取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
    6. 列出/etc目錄下所有以.conf結尾的文件的文件名,並將其名字轉換為大寫後保存至/tmp/etc.conf文件中。
    7. 顯示/var目錄下一級子目錄或文件的總各數。
    8. 取出/etc/group文件中第三個字段數值最小的10個組的名字。
    9. 將/etc/fstab和/etc/issue文件的內容合併為同一個內容後保存至/tmp/etc.test文件中。
    10. 請總結描述用戶和組管理類命令的使用方法並完成以下練習:
    (1) 創建組distro,其GID為2016。
    (2) 創建用戶mandriva,其ID號為1005,基本組為distro。
    (3) 創建用戶mageia,其ID號為1100,家目錄為/home/linux。
    (4) 給用戶mageia添加密碼,密碼為mageedu。
    (5) 刪除mandriva,但保留其家目錄。
    (6) 創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin。
    (7) 修改slackware的默認shell為/bin/tcsh。
    (8) 為用戶slackware新增附加組admins。

    2017-12-19
  • Codis集群3.03安装配置基础

    Codis基础 01.codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别。 codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面客户端来说是透明的,可以简单的认为后边连接是一个内存无限大的Redis服务。 codis架构图如下: 02.c…

    Linux干货 2016-09-26
  • 配置yum服务器——以centOS 6.9系统为例

    准备工作 关闭防火墙  关闭防火墙service iptables stop  设置防火墙开机不启动chkconfig iptables off  查看一下防火墙状态 iptables -vnL 如下图,可以看到已经关闭 关闭SElinux 使用命令 vim /etc/selinux/config 将SELINUX=enable…

    Linux干货 2017-08-05