zoukankan      html  css  js  c++  java
  • shell-分支语句_case

        Case语句主要适用于:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况和多分支if语句非常相似。只不过if要判断多个不同的条件而case语句只判断一个变量的不同取值。

    语句结构

    case  变量值  in
    模式1)
    	命令序列1
    	;;
    模式2)
    	命令序列2
    	;;
    。。。。。。。。。。。。。
    *)
    	默认命令序列
    esac
    

        在上述结构中,关键字case后面跟的是“变量值”,即“$变量名”,这点需要与for循环语句的机构加以区别。整个分支结构包括字case。esac之间。中间的模式1.。模式10,。对应为变量的不同取值(程序期望的取值),其中“ ”作为通配符,可以匹配任意值。

        执行流程:首先使用“变量值”与模式1进行比较,若取值相同则执行模式1后的命令序列,直到遇见双分号“;;”后跳至esac,表示结束分支;若与模式1不相匹配,则继续与模式2进行比较,若取值相同则执行模式2后的命令序列,直到遇见双分号,后跳至esac表示结束分支。依次类推。若找不到任何匹配的值,则执行默认模式“*)”后的命令序列,直到遇见esac后结束分支。


    • case行尾必须为单词“in”,每一模式必须以右括号“)”结束。
    • 双分号“;;”表示命令序列的结束。
    • 模式字符串中,可以用方括号表示一个连续的范围,如:“[0-9]”;还可以用竖杠符号“|”表示或,如“A|B”.
    • 最后的“)”表示默认模式, 其中的相当于通配符


    事例1:

        检查用户输入字符类型:提示用户输入一个字符,通过case语句判断该字符为字母,数字或者是其他字符,并给出相应的提示。

    #!/bin/bash
    read -p "请输入一个字符,并按enter确认:"  KEY
    case "$KEY" in 
            [a-z]|[A-Z])
                    echo "您输入的字符为字母"
                    ;;
            [0-9])
                    echo "您输入的字符为数字"
                    ;;
    *)
            echo "您输入的是空格、功能键或其他控制字符"
    esac


    事例2:

    #!/bin/bash
    case "$1" in
    start)
            echo -n "正在启动sleep服务。。。"
            if sleep 7200 &
      then
            echo "ok"
            fi
            ;;
    stop)
            echo -n "正在停止sleep服务。。。"
            pkill "sleep" &> /dev/null
            echo "ok"
            ;;
    status)
            if pgrep "sleep" &>/dev/null;then
            echo "sleep服务已经启动"
            else
            echo “sleep服务已经停止”
            fi
            ;;
    restart)
            $0 stop
            $0 start
            ;;
    *)
            echo "用法:$0 {start|stop|status|restart}"
    esac


    注:Sleep进程命令是用来暂停指定秒数的时间的

  • 相关阅读:
    GhostBSD 3.0RC3,基于GNOME的FreeBSD
    Nagios 3.4.3 发布,企业级监控系统
    Jolokia 1.0.6 发布, JMX远程访问方法
    微软希望开发人员不要使 WebKit 成为新版 IE6
    Kwort Linux 3.5 正式版发布
    EJDB 1.0.24 发布,嵌入式 JSON 数据库引擎
    Pale Moon 15.3 Firefox“苍月”优化版发布
    Galera Load Balancer 0.8.1 发布
    SmartSVN V7.5 正式发布
    PostgresQL建立索引如何避免写数据锁定
  • 原文地址:https://www.cnblogs.com/sunjianlin/p/13247073.html
Copyright © 2011-2022 走看看