Linux Shell编程case语句

case语句

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

Linux Shell编程语句case相关推荐

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

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

  2. Linux Shell脚本入门教程系列之(十三)Shell分支语句case … esac教程

    本文是Linux Shell脚本系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 上一篇之 后,分支语句非常实用,基本上高级语言都支持分支语句(pytho ...

  3. Linux Shell 编程学习总结

    Shell 教程 Shell简介:什么是Shell,Shell命令的两种执行方式 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成 ...

  4. 《Linux Shell编程从初学到精通(第2版)》pdf

    下载地址:网盘下载 内容简介 编辑 shell是用户与内核进行交互操作的一种接口,是linux最重要的软件之一.目前最流行的shell称为bash shell,bash shell脚本编程以其简洁.高 ...

  5. linux shell编程 ppt,《LinuxSHELL编程》PPT课件.ppt

    <<LinuxSHELL编程>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<LinuxSHELL编程>PPT课件.ppt(35页珍藏版)>请在 ...

  6. Linux Shell编程

    Linux Shell编程 一.简述       简单的介绍shell脚本的基本用法.      shell脚本是 由一些按照一定格式组合起来的shell命令 组成.shell脚本不需要编译就可以直接 ...

  7. Linux shell编程学习

    Linux shell编程学习 shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令.这点与Windows的命令提示符类似,但Linux shell的功能更加强 ...

  8. Linux Shell编程学习笔记(4)

    Linux Shell编程学习笔记(2015-7-20) 分类:linux shell   今天学习了Linux Shell中的控制结构.其实大多数语言的控制结构这一块都是基本类似的,有了C语言的基础 ...

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

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

最新文章

  1. 解决Eclipse Problems视图丢失图标问题
  2. 联想e550笔记本怎么样_预算5000-6000元笔记本电脑推荐(学生/入门/小白选购)*十二月更新...
  3. 如何用python最快的获取大文件的最后几行
  4. POJ - 1190 生日蛋糕(dfs+剪枝)
  5. python request.post 字典参数以json_Python requests.post方法中data与json参数区别详解
  6. 关于xcode7编译旧项目崩溃-[UIApplication _runWithMainScene:transitionContext:completion:]
  7. 个人站立会议-----20181216
  8. Git - Pull Request工作流
  9. 认识Blend 3工作区
  10. 1036 和奥巴马一起学编程
  11. 图书管理系统(一):出版社列表增加、删除和编辑
  12. python数据包pandas_python | 数据分析(二)- Pandas数据包
  13. 51单片机的矩阵键盘、跑马灯和呼吸灯设计
  14. 共模电感的工作原理及选型
  15. java去处科学技术法,java撤销科学计数法
  16. java解析.eml文件_PHP读取、解析eml文件及生成网页的方法示例
  17. Ubuntu下解压rar压缩文件
  18. 安装企业宽带的一些问题
  19. 费舍尔算法(文字描述,过于繁琐,其实实现很简单)
  20. 在web页面预览PDF文件

热门文章

  1. 月薪 8k 和月薪 38k 的程序员差距在哪里?
  2. 批量验证ssh账号密码登录shell脚本
  3. Oracle调用存储过程添加数据记录(包括唯一性判断)
  4. 【秋招/春招】投递岗位记录【快速法】
  5. #比赛# 互联网+比赛后感
  6. 推出首款编程教育开源硬件“掌控板”,创客教育专家委员会助力中国创客教育
  7. 用python实现古诗文网个人主页爬取
  8. CC2530 OSAL进入省电模式注意事项总结
  9. 650V IGBT 模块(FAM65V05DF1)NTMFD5C470NLT1G和NTMTS0D7N04CTXG(40V)表面贴装 MOSFET
  10. RSS订阅神器 —— Inoreader