Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

bashでもcase文がつかえる

bashでも、caseが使えます。
たまにみかける、

if [ some_rule ]; then
        #something to do
else
        #something to do
fi

を置き換えるにはちょうど良いかもしれません。
POSIX的にどうなのかは、調査中ですが……

実際のところ

記法は以下のとおりです。

case word in [ [(] pattern [| pattern]…) command-list ;;]… esac

これだと、何がなんだかサッパリですが。
以下の公式のサンプルを実行すると、挙動がはっきりしてきます。

echo -n "Enter the name of an animal: "
read ANIMAL
echo -n "The $ANIMAL has "
case $ANIMAL in
  horse | dog | cat) echo -n "four";;
  man | kangaroo ) echo -n "two";;
  *) echo -n "an unknown number of";;
esac
echo " legs."

これを実行すると、こんな感じです

$ bash case.bash 
Enter the name of an animal: dog
The dog has four legs.
$ bash case.bash 
Enter the name of an animal: kangaroo
The kangaroo has two legs.
$ bash case.bash 
Enter the name of an animal: lisp-alien        
The lisp-alien has an unknown number of legs.

てな感じで、でてきます。

参考もと