シェルでの条件分岐にはcase文が便利。
変数内の文字列で条件分岐する場合はcase、それ以外はif、というところだろうか。
case "$var" in "a" ) 処理1 ;; "bb" ) 処理1 ;; "c c c" ) 処理3 ;; esac
case_word.sh
#!/bin/bash # "q" 入力以外で終了しないように無限ループにする。 while : do read key case "$key" in "a" ) echo "aが入力されました。" ;; "bb" ) echo "bbが入力されました。" ;; "c c c" ) echo "c c cが入力されました。" ;; "q" ) echo "終了します。" break ;; esac done exit 0
このシェルスクリプト case_word.sh の実行結果は、以下の通りとなる。
$ ./case_word.sh a ←キー入力 aが入力されました。 bb ←キー入力 bbが入力されました。 c c c ←キー入力 c c cが入力されました。 a aaa ←キー入力 b b ←キー入力 ccc ←キー入力 q ←キー入力 終了します。 $
因に条件にはワイルドカード「*」も指定できます。
条件によっては 1つめの条件+2つめの条件と、複数の条件にマッチする場合が出てきますが
最初の条件の処理が実行されますのでご注意ください。
参考:http://shellscript.sunone.me/case.html
参考:http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231123/
photo by:
Alex E. Proimos