shell case语法

本文详细介绍了Shell中的case in语法,包括其基本格式、expression和pattern的使用。通过案例解析了当expression匹配到特定模式时如何执行相应语句,以及未匹配到任何模式时*)的作用。此外,还提及了case in对简单正则表达式的支持。
摘要由CSDN通过智能技术生成

case in的用法,它的基本格式如下:

case expression in
	pattern1)
		statement1l
		;;
	pattern2)
		statement2
		;;
	........
	*)
		statementn

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

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

patterh可以是一个数字、一个字符串,甚至是一个简单的正则表达式;

例:
在这里插入图片描述

输出结果:
在这里插入图片描述

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

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

对*)的几点说明:

  • Shell case in语句中的*)用来“托底”,万一expression没有匹配到任何一个模式,*)部分可以做一些“善后”工作,或者给用户一些提示。
  • 可以没有*)部分。如果expression没有匹配到任何一个模式,那么就不执行任何操作
  • 除最后一个分支外(这个分支可以是普通分支,也可以是*)分支),其它的每个分支都必须以;;结尾,;;代表一个分支的结束,不写的话会有语法错误。最后一个分支可以写;;,也可以不写,因为无论如何,执行到esac都会结束整个case in语句。

case in 和正则表达式

case in的pattern部分支持简单的正则表达式,具体来说,可以使用以下几种格式:

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值