暗无天日

=============>DarkSun的个人博客

Bash Case语句的终结符

Case分支语句的一般常用格式是这样的:

case $变量名 in
    模式1)
        命令序列1
        ;;
    模式2)
        命令序列2
        ;;
    *)
        默认执行的命令序列
        ;;
esac

但是今天偶尔看到 bash manual 中关于 case 语句的说明中有这么一段:

If the ;; operator is used, no subsequent matches are attempted after the first pattern  match.
Using  ;&  in  place of ;; causes execution to continue with the list associated with the next set of  patterns.
Using  ;;&  in place  of  ;;  causes the shell to test the next pattern list in the statement, if any, and execute any associated list on a successful  match.  

也就是说,case语句的分句终止符不仅仅可以时 ;; 还可以 ;&;;&, 他们的作用分别为:

;;
不再进行后续的匹配,直接跳出case语句
;&
不再进行后续的匹配,继续执行后面的case分句
;;&
继续对后面的case分句进行匹配,若能找到匹配项则执行该分句。