一、case语句
1.case语句的结构
case语句主要适用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的if语句非常相似,只不过if语句需要判断多个不同的条件,而case语句只是判断一个变量的不同取值。
case分支语句的语法结构如下所示。
case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 2
;;
…………
*)
默认命令序列
esac
在上述语句结构中,关键字case后面跟的是“变量值”,即“$变量名”,这点需要与for循环语句的结构加以区别。整个分支机构包括在case……esac之间,中间的模式1、模式2、……、*对应为变量的不同取值,其中*作为通配符,可匹配任意值。
case语句的执行流程:首先使用“变量值”与模式1进行比较,若取值相同则执行模式1后的命令序列,直到遇见双分号“;;”后跳转到esac,表示结束分支;若与模式1不相匹配,则继续与模式2进行比较,若取值相同则执行模式2后的命令序列,直到遇见双分号“;;”后跳转到esac,表示结束分支……以此类推,若找不到任何匹配的值,则执行默认模式“*)”后的命令序列,直到遇见esac后结束分支。使用case分支语句时,有几个特点需要注意:
1.case行尾必须为单词“in”,每一模式必须以右括号“)”结束。
2.双分号“;;”表示命令序列的结束。
3.模式字符串中,可以用方括号表示一个连续的范围,如“[0-9]”;还可以用竖杠符号“|”表示或,如“A|B”。
4.最后的“*)”表示默认模式,其中的*相当于通配符。