Section 38.1: 简单的 case 语句
在所有 bash 版本的支持中 case 语句执行与模式匹配的 case 是最简单。
操作符 ;; 会在匹配到第一个匹配项后执行里面的命令之后中断。
#!/bin/bash
var=1
case $var in
1)
echo "Antartica"
;;
2)
echo "Brazil"
;;
3)
echo "Cat"
;;
esac
Outputs:
Antartica
Section 38.2: 下穿机制的 case 语句
Version ≥ 4.0
自 bash 4.0 起,引入了一个新的操作符 ;&,它提供了下穿机制。
#!/bin/bash
var=1
case $var in
1)
echo "Antartica"
;&
2)
echo "Brazil"
;&
3)
echo "Cat"
;&
esac
输出:
Antartica
Brazil
Cat
Section 38.3: 仅当后续模式匹配时才通过
Version ≥ 4.0
自 Bash 4.0 起,引入了另一个运算符 ;;& ,该运算符也提供了仅在后续 case 语句(如果有)中的模式匹配时才跳过的功能。
在下面的示例中,abc 符合第一和第三种情况,但不符合第二种情况。因此,第二种情况不会被执行。
#!/bin/bash
var=abc
case $var in
a*)
echo "Antartica"
;;&
xyz)
echo "Brazil"
;;&
*b*)
echo "Cat"
;;&
esac
输出:
Antartica
Cat