sh|shellで条件分岐:case文

sh|shellで条件分岐:case文

シェルでの条件分岐には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

No Comments

Post a Comment