1. 程式人生 > >Shell分支語句case … esac教程

Shell分支語句case … esac教程

分支語句非常實用,基本上高階語言都支援分支語句(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

說明:這個指令碼練習的是模式匹配,模式匹配支援‘|’符,有一個條件符合就會執行命令。