case .. esac语句和其它语句中的switch .. case语句功能相似,是一个多分支语句结构。
case语句匹配一个值或一个模式,如果匹配,则执行相应的语句,case语句的格式如下:
case 值 in 模式1) command1 command2 command3 ;; 模式2) command1 command2 command3 ;; *) command1 command2 command3 ;; esac
case关键字后接要判定的数据,再接关键字in,数据可以是变量或常量。匹配项也可以是常量或变量,后以右括号结束。当条件匹配成功后,将执行匹配项之后的语句,直到;;为止。如果无匹配项,则执行*项。
看如下例子:
#!/bin/bash read var case ${var} in 1) echo "You inputed 1" ;; 2) echo "You inputed 2" ;; *) echo "You inputed not 1 or 2" ;; esac
运行脚本,当你输入1,则执行1下面的语句,2同样,当输入非1非2时,则执行*下面的语句。