シェルスクリプトの制御構造(switch)

switch

シェルのswitch文はC言語のswitchに似ているが、もう少し柔軟な使い方ができる。
シェルで使用するswitch文の形式は以下の通り。

switch(変数)
	case 値1 :
	    コマンド1
	    breaksw
	case 値2 :
	    コマンド2
	    breaksw
	    .
	    .
	default :
	    コマンド
endsw

C言語の ように{ と } は無くて、そのかわり endsw が最期につく。
値1、値2...の部分には数値・文字列どちらでも使用できて、正規表現も使うことができる。
例えば、値の部分に*.cとあるとファイル名の最期の2文字が.cであるようなファイル(C言語プログラム)、*.m[ab]とあると最期の3文字が.maまたは.mbであるようなファイル名(MAYAデータファイル)になる。
実行される順番は以下の通り。

  1. 変数が値1にマッチするかどうか調べる。
  2. マッチすれば、コマンド1を実行して終り。
  3. マッチしなければ、次の値2にマッチするかどうか調べる。
  4. マッチすれば、コマンド2を実行して終り。
  5. 以下、同様にcaseの値とマッチしているかどうか調べていってマッチしている部分のコマンドを実行して終る。
  6. 全てのcaseの値にマッチしなければdefaultのコマンドを実行する。
    defaultは省略可能。

switchの使用例

画像ファイルの表示とMAYAのレンダリングを一つのプログラムで実行できるシェルスクリプトを作ってみよう。
以下のシェルスクリプトをviによってdo1.shというファイル名前で作る。

switch($argv[1])
	case *.iff :
		fcheck $argv[1]
		breaksw
	case *.ma :
		Render -rd . $argv[1]
		breaksw
endsw
上のシェルスクリプトを実行すると以下のようになる。
(サンプルデータkadai.maをホームディレクトリの下のunix2にダウンロード。)

# csh do1.sh kadai.ma
...   <- Render kadai.ma を実行
# csh do1.sh test.iff
...   <- fcheck test.iff を実行
# csh do1.sh kadai.sgi
#   <- 何も実行しない

練習課題

まとめ

参考


Prev | Next
Home | Contents
abe@injapan.net