3分理解!シェルスクリプトでのcaseの使い方

case
  • このエントリーをはてなブックマークに追加
  • Pocket

シェルスクリプトでの条件分岐ではifがよく使われる。

しかし条件分岐の方法はifだけではなく、caseも使いやすい場合がある。

このページではシェルスクリプトでのcaseの使い方についてお伝えしよう。

条件分岐をさせるcase

caseとは?

caseとは条件にマッチしたケースで処理を決めていくパターンだ。

例えば、変数の値が「appleであればリンゴを表示」「orangeであればオレンジを表示」「grapeであればブドウを表示」というプログラムがあったとき、caseを使うと便利だ。

ifでももちろん表現できるが、caseの方が使いやすい。

caseはC言語のswitchに相当する。if文とくらべると複雑な条件はたてるのには向いていない。caseでできることはifでも可能なので、現にPythonなどではcaseにあたる文法は存在しない。

しかし一つの変数で多くの分岐選択肢を設定できるので、便利なことは間違いない。文法も簡素なので可読性も高い、用途に応じて使い分けよう。

caseの書式について

caseの書き方は次のようになる。

case 変数 in
マッチパターン1 ) 処理1 ;;
マッチパターン2 ) 処理2 ;;
マッチパターン3 ) 処理3 ;;
マッチパターンN ) 処理N ;;
esac

上から順に処理され、どのパターンにもマッチしなかった場合はなにも処理されない。最後に「;;」とふたつセミコロンをつけることに気をつけよう。

サンプルプログラム

vi case-ex1.sh

#!/usr/bin/bash
#変数作成と値取得
read -p: VAR
#case文、簡素な分岐が可能
case "$VAR" in
"a" )  echo ”処理1です” ;;
"b" )  echo “処理2です” ;;
"c" )  echo “処理3です” ;;
"d" )  echo “処理4です” ;;
esac

実行結果

$ ./case-ex1.sh
:a
処理1です
$ ./case-ex1.sh
:b
処理2です
$ ./case-ex1.sh
:c
処理3です
$ ./case-ex1.sh
:d
処理4です
$ ./case-ex1.sh
:e

caseのサンプルプログラム

パターンに変数やワイルドカード(* | []など)を指定する

パターンマッチングなのでワイルドカードなども利用可能だ。

vi case-ex2.sh

#!/usr/bin/bash
#変数を使用したパターン
PTN=abc 
#分岐用の値を収める変数の値を取得
read -p : VAR
#case文 アスタリスクやOR条件、変数などをパターンとして設定できる。
case "$VAR" in
ans* ) echo "VARはansで始まる文字列" ;;
[A-Z]* ) echo "VARは大文字A~Zで始まる文字列" ;;
"yes" | "YES" ) echo "VARはyesもしくはYES" ;;
"$PTN" ) echo "マッチパターンは変数であっても問題ない" ;;
* ) echo "全てのパターンにマッチ、最後にもってくることで上記以外の場合を想定できる" ;;
esac

実行結果

$ ./case-ex2.sh 
:ans
VARはansで始まる文字列
$ ./case-ex2.sh 
:Ans
VARは大文字A~Zで始まる文字列
$ ./case-ex2.sh 
:yes
VARはyesもしくはYES
$ ./case-ex2.sh 
:abc
マッチパターンは変数であっても問題ない
$ ./case-ex2.sh 
:aaaaaaaa
全てのパターンにマッチ、最後にもってくることで上記以外の場合を想定できる

case サンプル2

マッチパターンにアスタリスクなどを使うことも可能であり、変数も指定できるほか 「|」をつかうことで「or」の処理をさせることができる。

まとめ

このページではシェルスクリプトでのcaseの使い方についてお伝えしてきた。

可読性が高く便利なことも多いため、ifと並行して使えるようになっておこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する