分支语句非常实用,基本上高级语言都支持分支语句(python 没有),大多数都使用switch ... case格式,但是在Shell却没有switch ... case,不过别担心,Shell是支持分支语句的,只不过使用case ... esac格式而已。二者在本质上是相同的。
一、Shell分支语句case···esac语法
case 值 in
模式1)
command1
;;
模式2)
command2
;;
*)
command3
;;
esac
说明:case后为取值,值后为关键字 in,接下来是匹配的各种模式,每一模式最后必须以右括号结束。
值可以为变量或常数。
模式支持正则表达式,可以用以下字符:
* 任意字串
? 任意字元
[abc] a, b, 或c三字元其中之一
[a-n] 从a到n的任一字元
| 多重选择
匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
;; 与其他语言中的 break 类似,意思是不执行接下来的语句而是跳到整个 case 语句的最后。
*)与default相似,如果上面没有匹配到的模式,则执行*)里的内容。
二、Shell分支语句case···esac使用举例
通过一个例子来学习下case…esac命令:
#!/bin/bash
case $1 in
start | begin )
echo "I am started";;
stop | end )
echo "I am stopped";;
*)
echo "other command!";;
esac
说明:这个脚本练习的是模式匹配,模式匹配支持‘|’符,有一个条件符合就会执行命令。