JP1/Advanced Shell
形式
case 式 in パターン1)処理a ;; パターン2)処理b ;; ... *)処理x ;; esac
機能
文字列の内容に応じて複数ある処理のうち,1つを実行する制御文です。
説明
inはcase文の処理の開始を意味し,esacはcase文の終了を意味します。一致するパターンが存在した場合,「)」から「;;」までに記述されている処理を実行します。1つのパターンは「;;」で区切られ,パターンは複数記述できます。また,*パターンにはどのパターンにも一致しなかった場合の処理を記述します。パターンと一致しているかどうかの判定は,記述された順に行います。式の内容が複数のパターンに一致する場合は,最初に一致したパターンに記述された処理を実行します。
inを「{」,esacを「}」で記述できます。しかし,inの場合はesacを,「{」の場合は「}」を省略できません。それぞれの対応が合わない場合,構文不正でエラー終了します。
パターンには,ワイルドカードによる正規表現の指定ができます。
使用例
- パターンの終端を示す「;;」は,処理と同一行に記述できます。
case $cnt in 0) echo "cnt is ZERO" ;; *) echo "cnt is not ZERO" ;; esac- パターン内の最後のコマンドがスクリプト拡張コマンドの場合,「;;」はスクリプト拡張コマンドの引数と解釈されるため,改行して記述します。
case $cnt in 0) #-adsh_step_start STEP01 echo "cnt is ZERO" #-adsh_step_end ;; ←誤り。「;;」の前で改行する。 *) #-adsh_step_start STEP01 echo "cnt is not ZERO" #-adsh_step_end ;; esac
All Rights Reserved. Copyright (C) 2011, 2012, Hitachi, Ltd.