http://blog.csdn.net/dreamtdp/article/details/8048720

case语句适用于需要进行多重分支的应用情况。

case分支语句的格式如下:

case $变量名 in

模式1

命令序列1

;;

模式2

命令序列2

       ;;

*)

默认执行的命令序列     ;;

esac

case语句结构特点如下:

case行尾必须为单词“in”,每一个模式必须以右括号“)”结束。

双分号“;;”表示命令序列结束。

匹配模式中可是使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|”表示或。

最后的“*)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后

的命令序列。

case语句实例:由用户从键盘输入一个字符,并判断该字符是否为字母、数字或者其他字符,

并输出相应的提示信息。

#!/bin/bash
read -p "press some key ,then press return :" KEY
case $KEY in
[a-z]|[A-Z])
echo "It's a letter."
;;
[0-9]) 
echo "It's a digit."
;;
*)
echo "It's function keys、Spacebar or other ksys."
esac

######################################################

case word in [ pattern [ | pattern ] ... ) list ;; ] ... esac
 case/esac的标准用法大致如下: 
 case $arg in 
     pattern | sample) # arg in pattern or sample 
     ;; 
     pattern1) # arg in pattern1 
     ;; 
     *) #default 
     ;; 
 esac 
 arg是您所引入的参数,如果arg内容符合pattern项目的话,那麽便会执行pattern以下的程式码,而该段程式码则以两个分号";;"做结尾。

可以注意到"case"及"esac"是对称的,如果记不起来的话,把"case"颠倒过来即可。

--------------------------------------------------------------------------------

例一 : paranoia
 #!/bin/sh 
 case $1 in 
         start | begin) 
           echo "start something" 
         ;; 
         stop | end) 
           echo "stop something" 
         ;; 
         *) 
           echo "Ignorant" 
         ;; 
 esac

执行
 [foxman@foxman bash]# chmod 755 paranoia 
 [foxman@foxman bash]# ./paranoia 
 Ignorant 
 [foxman@foxman bash]# ./paranoia start 
 start something 
 [foxman@foxman bash]# ./paranoia begin 
 start something 
 [foxman@foxman bash]# ./paranoia stop 
 stop something 
 [foxman@foxman bash]# ./paranoia end 
 stop something

--------------------------------------------------------------------------------

例二 : inetpanel
 许多的daemon都会附上一个管理用的Shell Script,像BIND就附上ndc,Apache就附上apachectl。这些管理程式都是用shell script来写的,以下示一个管理inetd的shell script。 
 #!/bin/sh

case $1 in 
     start | begin | commence) 
        /usr/sbin/inetd 
     ;; 
     stop | end | destroy) 
        killall inetd 
     ;; 
     restart | again) 
        killall -HUP inetd 
     ;; 
     *) 
        echo "usage: inetpanel [start | begin | commence | stop | end | destory | restart | again]" 
     ;; 
 esac

--------------------------------------------------------------------------------

例三 : 判断系统
 有时候,您所写的Script可能会跨越好几种平台,如Linux、FreeBSD、Solaris等等,而各平台之间,多多少少都有不同之处,有时候需要判断目前正在那一种平台上执行。此时,我们可以利用uname来找出系统资讯。 
 #!/bin/sh

SYSTEM=`uname -s`

case $SYSTEM in 
     Linux) 
         echo "My system is Linux" 
         echo "Do Linux stuff here..." 
     ;; 
     FreeBSD) 
         echo "My system is FreeBSD" 
         echo "Do FreeBSD stuff here..." 
     ;; 
     *) 
         echo "Unknown system : $SYSTEM" 
         echo "I don't what to do..." 
     ;; 
 esac

注意:1、*) 相当于其他语言中的default。

2、除了*)模式,各个分支中;;是必须的,;;相当于其他语言中的break

3、 | 分割多个模式,相当于or

Linux Shell编程case语句的更多相关文章

  1. Shell 编程 case语句

    本篇主要写一些shell脚本case语句的使用. 字符判断 #!/bin/bash read -p "请输入一个字符:" char case $char in [a-z]|[A-Z ...

  2. shell编程:case语句

  3. linux shell编程语句if、case.

    shell学习笔记--if,case shell的控制流结构主要有if语句.for语句.case语句.while语句.until语句这五种,在shell中这些语句的用法有点类似C语言,很容易学会,但也 ...

  4. linux —— shell 编程(编程语法)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...

  5. linux shell编程总结

    linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...

  6. linux shell 编程参考

    #!/bin/bash my_fun() { echo "$#" } echo 'the number of parameter in "$@" is '$(m ...

  7. Linux Shell编程与编辑器使用详解

    <Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...

  8. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

  9. Linux Shell编程参考大全

    本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...

随机推荐

  1. 「POI2015」KIN

    传送门 Luogu 解题思路 想要做这道题,只要会维护区间最大子段和就好了. 而这个可以用线段树维护模板点这里 对于重复的情况,我们可以对每一个位置记一个前驱表示和当前位置种类相同的前一个位置. 然后 ...

  2. 小程序view标签靠右方法

    第一种:不浮动靠右 text-align:right; 第二种:浮动靠右 float:right;

  3. zabbix4.4安装 centos7+mysql+Nginx

    1.安装数据源 # rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch. ...

  4. leetcode322 Coin Change

    """ You are given coins of different denominations and a total amount of money amount ...

  5. 配置antMatchers(HttpMethod.GET,"/**").permitAll()当时仍然会校验

    .antMatchers(HttpMethod.GET,"/**").permitAll() .anyRequest().authenticated() .and() .addFi ...

  6. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:内容居中

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. Windows下使用nginx问题

    1.下载完成后,解压缩,运行cmd,使用命令进行操作,不要直接双击nginx.exe,不要直接双击nginx.exe,不要直接双击nginx.exe 一定要在dos窗口启动,不要直接双击nginx.e ...

  8. 解题报告:luogu P3853 [TJOI2007]路标设置

    题目链接:P3853 [TJOI2007]路标设置 是个水二分,那你还\(WA\).很简单,就是练了练和早上那题相似的题. 二分答案即可,复杂度\(O(Nlogl)\),可以通过本题. 不过,需要注意 ...

  9. numpy.linspace使用详解

    numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 在指定的间隔内返回均匀间隔的数字. 返回nu ...

  10. android studio 入门坑

    安装 android studio,碰到下面这个图片,直接跳过. 安装时候,选择自定义设置,里面可以配置 sdk 的存放位置. 新建工程后,gradle sync 比较慢,可以 修改工程中的 buil ...