shell笔记
- case语法结构
case语法结构
Caseesac语句与其他语言中的switch·.case 语句类似,是一种多分支选择结构。case语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。
case语法结构:
case expr in #expr为表达式,关键词in不要忘pattern1) #若expr与pattern1匹配,注意括号commands1 #则执行语句块commands1;; #跳出case结构pattern2) #expr与pattern2匹配commands2 #则执行语句块commands2;; #跳出case结构...... #可以有任意多个模式匹配*) #若expr与上面的模式都不匹配commands #执行语句块commands;; #跳出case结构
esac #跳出case结构
case 选择语句的几点说明:
在使用case选择语句的时候,需要注意如下几点:
1.表达式expr 按顺序匹配每个模式,一旦有一个模式匹配成功,则执行该模式后面的所有命令,然后退出case。
2.如果 expr 没有找到匹配的模式,则执行默认值*)后面的命令块(类似于 if 中的else)。*)可以不出现。
3.匹配模式pattern 中可以含有通配符和。
4.每个命令块的最后必须有一个双分号,可以独占一行,或放在最后一个命令的后面。
#!/bin/bash
##filename:case1.sh
echo "what is your preferred scripting language?"
read -p "1)bash 2)perl 3)python 4)ruby:" langcase $lang in1) echo "you selected bash" ;;2) echo "you selected perl" ;;3) echo "you selected python" ;;4) echo "you selected ruby" ;;
esac
#!/bin/bash
##filename:case_fruit.sh
echo "which is your preferred fruit?"
read -p "Apple,Pear,Kiwi,Lemon,Orange,Banana:" pi #读取输入内容,赋值给变量pi
case $pi in #如果输入内容pi[Aa]*|[Pp]*) echo "You selected Apple/Pear." ;; #是Aa/Pp输出"You selected Apple/Pear."[Kk]*|[Ll]*) echo "You selected Kiwi/Lemon." ;;[Oo]*|[Bb]*) echo "You selected Orange/Banana" ;;*) echo "No fruit i like." ;; #输入内容非以上选项,则表示没有喜欢的水果
esac