首页 > 系统相关 >Shell脚本--case in

Shell脚本--case in

时间:2023-04-18 16:00:24浏览次数:35  
标签:case 语句 Shell -- echo sh esac expression

当分支较多,并且判断条件比较简单时,使用 case in 语句就比较方便了。

其基本格式为:

case expression in
    pattern1)
        statement1
        ;;
    pattern2)
        statement2
        ;;
    pattern3)
        statement3
        ;;
    ……
    *)
        statementn
esac

case、in 和 esac 都是 Shell 关键字,expression 表示表达式,pattern 表示匹配模式。

  • expression 既可以是一个变量、一个数字、一个字符串,还可以是一个数学计算表达式,或者是命令的执行结果,只要能够得到 expression 的值就可以。
  • pattern 可以是一个数字、一个字符串,甚至是一个简单的正则表达式。

case 会将 expression  的值与 pattern1、pattern2、pattern3 逐个进行匹配:

  • 如果 expression 和某个模式(比如 pattern2)匹配成功,就会执行这模式(比如 pattern2)后面对应的所有语句(该语句可以有一条,也可以有多条),直到遇见双分号 ;; 才停止;然后整个 case 语句就执行完了,程序会跳出整个 case 语句,执行 esac 后面的其它语句。
  • 如果 expression 没有匹配到任何一个模式,那么就执行 *) 后面的语句(*表示其它所有值),直到遇见双分号 ;; 或者 esac 才结束。

示例:

#!/bin/bash

opt=$1
case ${opt} in
    y)
        echo yes
        ;;
    n)
        echo no
        ;;
    *)
        echo error
esac

执行脚本时,传入不同参数结果不同:

sh cstring.sh y    结果:yes
sh cstring.sh Y    结果:error

pattern 部分支持简单的正则表达式,可以使用以下几种格式:

*        表示任意字符串。
[abc]    表示 a、b、c 三个字符中的任意一个。比如,[15ZH] 表示 1、5、Z、H 四个字符中的任意一个。
[m-n]    表示从 m 到 n 的任意一个字符。比如,[0-9] 表示任意一个数字,[0-9a-zA-Z] 表示字母或数字。
|        表示多重选择,类似逻辑运算中的或运算。比如,abc | xyz 表示匹配字符串 "abc" 或者 "xyz"。

示例:

#!/bin/bash

opt=$1
case ${opt} in
    y|Y)
        echo yes
        ;;
    n|N)
        echo no
        ;;
    *)
        echo error
esac

执行脚本时,传入不同参数结果不同:

sh cstring.sh y    结果:yes
sh cstring.sh Y    结果:yes

 

标签:case,语句,Shell,--,echo,sh,esac,expression
From: https://www.cnblogs.com/chien/p/17329907.html

相关文章

  • Python实现搭建-简单服务器教程
    Python动态服务器网页(需要使用WSGI接口),基本实现步骤如下:1.等待客户端的链接,服务器会收到一个http协议的请求数据报2.利用正则表达式对这个请求数据报进行解析(请求方式、提取出文件的环境)3.提取出文件的环境之后,利用截断取片的方法将文件名转化为模块名称4.使用m=__import__(......
  • 打卡5
    斐波那契数列#include<stdio.h>intmain(){  longfib1=1,fib2=1;  for(inti=1;i<=15;i++)  {    printf("%12d%12d",fib1,fib2);    if(i%2==0)    printf("\n");    fib1=fib1+fib2;    fib2=fib1+fib2;  }  re......
  • 抓包显示”TCP Port number reused“端口重复使用
    访问linux指定端口失败在一次调试中,在windows平台下使用软件,访问linux系统的8554端口失败,于是使用windows系统抓包查看;看到linux系统8554端口回复给windows系统14676端口的内容:win=0滑动窗口大小为0、Len=0长度为0;并且windows系统访问linux系统时“TCPPortnumberreused:重......
  • VSCode 缩进参考线和垂直标尺
    设置方法:文件–》首选项–》设置–》--》搜索“editor.rulers”--》更改设置"editor.rulers":[120],或者其他期望的值,即可。......
  • Shell脚本--(())
    双小括号(())是BashShell中专门用来进行整数运算的命令,它的效率很高,写法灵活。但是,(())只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。 1.(()) 使用(()) 的语法格式为:((表达式))通俗地讲,就是将数学运算表达式放在((和))之间。表达式可以只有一个......
  • PPT结束界面设计
    PPT常见结束页面设计整理          PPT文案设计技巧        ......
  • poi判断是否空行
    空行现象:空行只解析出一个cell,并且type是STRING。与实际列数不符解决方法:强制要求从第0列开始判断cell是否为null且type不为BLANK,否则即认为改行为空行并跳过处理1/**2*校验是否为空行3*4*@paramrow行5*@return是否为空6*/7publics......
  • 八方旅人2剑士加点推荐 技能怎么加点最好_八方旅人剑士技能是属性攻击吗
    四方远方2魔法师你侧发力了吗?缅斯了下四方远方2DLC,毛序,魔法师的防卫反扑必胜信念啊!第二次30点专业技能点很大关键点防守反击啊,过强了!四方远方2的魔法师,总算埋首玩剑,且专用潜能,十分暴力行为。四方远方2魔法师专业技能是不是加一点?四方远方2魔法师加一点所推荐:赖草、恫吓、辐花......
  • SSH 连接阿里云
    SSH连接阿里云本来是DBeaver连接数据库时下不下来驱动,网络环境太麻烦了。最后好像是要搞一个跳板机,就用阿里云上的测试环境了。连接完跳板机后再DBeaver中设置了网络连接的代理,和Proxy才搞好(127.0.0.1:1080)。配置流程打开CMD,创建并打开SSH文件:C:\Users\qiyuanc>mk......
  • 基于UDS的DoIp实现(三) -- UDS服务实现
    一、UDSTask处理voidUDSPeriodicTask(void){//其它功能处理if(mRequest_Received){mRequest_Received=FALSE;UDS_CAN_Service_Manager();}}UDSPeriodicTask,是属于轮训功能的处理,当接收到数据时,就会对数据进行解析。数据解析:void......