case in 的用法
case expression in
pattern 1)
statement1
;;
pattern 2)
statement2
;;
……
*)
statementn
esac
其中:case in 和esac都是shell关键字,expression表示表达式,pattern表示匹配模式 expression既可以是一个变量、一个数字、一个字符串,也可以是一个数学计算表达式或者命令的执行结果 pattern可以是一个数字、一个字符串、一个简单的正则表达式 执行过程: case会将expression的值与pattern1、pattern2等逐个进行匹配: 如果expression和某个模式匹配成功,就会执行这个模式后面对应的所有语句(该语句可以有一条,也可以有多条),直到遇见双分号;;才停止,然后整个case语句就执行完毕,跳出case语句,执行esac后面的其他语句 如果expression没有匹配到任何一个模式,那么就执行*)后面的语句(表示其他所有值),直到遇见双分号;;或者esac才结束。 )相当于多个if的分支语句中最后的else部分 对*)的说明: 1.case in语句中的*)用来“托底”,万一expression没有匹配到任何一个模式,*)部分可以做一些“善后”工作,或者给用户一些提示 2.可以没有*)部分,如果expression没有匹配到任何一个模式,就不执行任何操作 3.除了最后一个分支外(可以是普通分支,也可以是*)分支),其他的分支都必须以;;结尾,;;代表一个分支的结束。最后一个分支可以写;;,也可以不写。因为无论如何,执行到esac都会结束整个case in语句 例:
case in 和正则表达式
case in 的pattern部分支持简单的正则表达式:
格式 说明 * 表示任意字符串 [abc] 表示a、b、c三个字符中的任意一个 [m-n] 表示从m到n的任意一个字符 [0-9] 表示0-9的任意一个数字 [0-9a-zA-Z] 表示任意数字或字母 l 表示多重选择,类似逻辑运算中的或运算 abc l xyz 表示abc或者xyz