シェル・プログラミング:7. case文

 代入された値とパターンマッチを行い,マッチした場合の処理をさせるのが「case 文」です。

■case 文

     case 変数 in [値1] [値2] ...
     パターン1)
          処理1
     ;;
     パターン2)
          処理2
     ;;
     esac

[値1] [値2] ... 部分は,変数に値が代入されていない場合に指定。また,パターンは幾つでも良い。パターン部分には,正規表現が使用可能。また,| で OR を意味する。

#
# 例 12
#
#!/bin/sh

echo '# Example 12'

echo -n 'Do you want to run hello.pl? [y/n]: '
read answer

case $answer in
y*|Y*)        <-- パターンマッチに正規表現が使用可能。| は OR の意。パイプではない。
   echo 'Running hello.pl...'
   perl ~/My_Programs/hello.pl
   exit  <-- スクリプトの処理を終了させる。
;;
n*|N*)
   echo 'Sorry.'
   exit
;;
esac

echo "Uuuhm...You didn't enter y[es] or n[o]."
実行例)
% sh script
# Example 12
Do you want to run hello.pl? [y/n]: yes
Running hello.pl...
Hello World!
Message
%