看到一些很实用的脚本,由于之前对于bash脚本的积累都比较离散,没有一个全面的了解,在这里记录一下:

bash的case语句用法

case语句的语法规则是:

case $变量名 in 模式1)命令序列1;;模式2)命令序列2;; *)默认执行的命令序列     ;;
esac

注意的是, case比较的是pattern,然后既然是通配符,那么:

  1. 切记通配符本身不能用引号括起来。
  2. 而对于变量VAR是否使用双引号括起来都可以。
  3. 另外要记住通配符(pattern)和规则表达式(regular expression)的区别。
  4. 匹配模式中可是使用方括号表示一个连续的范围,如[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"颠倒过来即可。

case语句匹配的是通配符,如果加上双引号后就不是按通配符处理,而是按文本处理。

使用双引号后通配符就不再生效 ,只是作为普通字符对待。

转载于:https://www.cnblogs.com/J1ac/p/10988210.html

bash中case的用法相关推荐

  1. IsNull 和 SQL语句中CASE WHEN用法

    [转]IsNull 和 SQL语句中CASE WHEN用法收藏   [转]IsNull 和 SQL语句中CASE WHEN用法 1.ISNULL     使用指定的替换值替换   NULL.      ...

  2. Oracle中case when用法

    转载自:http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html CASE WHEN 表达式有两种形式 --简单Case函数 CA ...

  3. update case when 多字段,多条件, mysql中case when用法

    文章目录 前言 sql示例 普通写法: update case when写法 update case when 多字段写法 case when语法 case when 的坑 1.不符合case whe ...

  4. MySQL中Case When用法详解

    最近,在学习Hive基础知识时,遇到了遇到了Case When Else End语法,以前学习MySQL时忽略了这部分知识点,现总结一下相关的知识给大家.首先练习一个例子如下: 一.学生课程成绩统计 ...

  5. SQLServer中Case的用法

    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> CASE 可能是 SQL ...

  6. Linux中case的用法

    case命令会将指定的变量与不同模式进行比较.如果变量和模式是匹配的,那么shell会执行为该模式指定的命令.可以通过竖线操作符在一行中分隔出多个模式. 星号会捕获所有与已知模式不匹配的值. #!/b ...

  7. mybatis中case when用法以及@Param用法

    https://libusi.blog.csdn.net/article/details/108044060 select  d.tools_name, null as sum,null as num ...

  8. java中case when用法_CASE WHEN 的简单用法

    CASE有两种格式 简单CASE函数:case sex when 1 then '男'when 0 then '女'else 其他  end CASE搜索函数: case when sex=1 the ...

  9. python中case的用法_python中Switch/Case实现的示例代码

    python 的 python中Switch/Case实现的示例代码 学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现 ...

最新文章

  1. Matplot pyplot绘制单图,多子图不同样式详解,这一篇就够了
  2. 【官宣·第一弹】2021中国肠道大会7条重要消息
  3. 神经网络php代码,慢慢研究
  4. pku 1185 炮兵阵地
  5. yolo算法_吴恩达深度学习笔记(100)-目标检测之YOLO 算法讲解
  6. oracle重命名日志成员出错,Oracle日志文件
  7. 51nod1836-战忽局的手段【期望dp,矩阵乘法】
  8. NodeJs——(14)express框架的send()方法简介
  9. 在eclipse中引入mybatis和spring的约束文件
  10. 【自动化测试工具】QTP/UFT入门
  11. STM32串口波特率计算问题和常用波特率
  12. 横向堆积柱状图(peak distribution)
  13. [哈佛幸福课13 听后感]
  14. 手机无线投屏到linux电脑,scrcpy - 手机无线投屏到电脑
  15. EXCEL的去重去除某个字段后全部操作
  16. 移动GIS开发:手机基站定位+离线切片地图(矢量vtpk+栅格tpk)导航安卓APP
  17. 什么是bcd码数据传输通讯_数据传输 数据通讯
  18. 结束时间和开始时间不能大于31天
  19. 基于51单片机的简易游戏机
  20. ubuntu 8.04玩魔兽争霸

热门文章

  1. 用js方法做提交表单的校验
  2. Java垃圾回收之新生代垃圾收集器
  3. Go 学习笔记(63)— Go 中的 for ... range 对切片和数组的差异
  4. 后勤问题怎么办。。。(求刊登)
  5. 【VB】学生信息管理系统6——错误调试
  6. 什么是码元计算机通信
  7. ESLint问题记录
  8. SQL函数Group_concat用法
  9. LeetCode简单题之圆形赛道上经过次数最多的扇区
  10. 你了解计算机系统的层次结构吗?计算机语言怎么发展的?