0Pricing
DevOps Bootcamp · レッスン

case文とパターンマッチング

複数の値をすっきり分岐処理します。case文、globパターン、複数パターンのマッチングを学び、長いif-elifチェーンよりcase文が適している理由を理解します。

「case文とパターンマッチング」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

case を使う理由

変数が多くの値を取り得る場合、長い if/elif/elif の連鎖は扱いにくくなります。case 文は値をパターンと照合でき、はるかに読みやすくなります。

基本構文

case ブロックでは値をパターンと照合します。各パターンは ) で終わり、処理本体は ;; で終了します。ブロック全体は esac で終了します。

case "$fruit" in
  apple) echo "red";;
  banana) echo "yellow";;
esac

デフォルトケース

*) パターンは任意の値に一致し、else のようなデフォルトの包括条件として機能します。

case "$cmd" in
  start) echo "starting";;
  stop) echo "stopping";;
  *) echo "unknown command";;
esac

複数のパターンを照合する

| を使うと、1つの分岐で複数のパターンを照合できます。

case "$ans" in
  y|Y|yes) echo "Confirmed";;
  n|N|no) echo "Cancelled";;
esac

Glob パターン

パターンには正規表現ではなくシェルの glob を使います。* は任意の文字列、? は任意の1文字、[...] は文字クラスに一致します。

case "$file" in
  *.txt) echo "text file";;
  *.jpg|*.png) echo "image";;
esac

文字範囲

角括弧のパターンで範囲を照合できます。先頭の文字や数字でグループ化する場合に便利です。

case "$ch" in
  [a-z]) echo "lowercase";;
  [0-9]) echo "digit";;
esac

シンプルなメニュー

case は、ユーザーが選択肢を選ぶメニュー形式のスクリプトで特に便利です。

read -p "Choice: " opt
case "$opt" in
  1) backup;;
  2) restore;;
  *) echo "Invalid";;
esac

case と if の違い

複雑なブール条件(範囲、比較、複数の変数)にはifを使います。1つの変数の値やパターンに応じて分岐する場合はcaseを使います。

値を引用符で囲む

テストする値("$var")を引用符で囲むと、空の値やスペースを含む値も安全に扱えます。

case "$input" in
  "") echo "empty";;
  *) echo "got: $input";;
esac

;;& によるフォールスルー

Bash では ;;& を使うと、一致した後も後続のパターンのテストを続けられ、複数の分岐を実行できます。

case "$f" in
  *.tar) echo "tar";;&
  *.gz) echo "gzip";;
esac

引数の振り分け

実際によく使われる方法として、スクリプトの最初の引数に応じて振り分け、CLI ツールのサブコマンドを実装できます。

case "$1" in
  init) do_init;;
  build) do_build;;
  *) echo "usage: $0 {init|build}";;
esac

クイックチェック

理解度を確認しましょう。

まとめ

case 文について学びました。値を glob パターンと照合し、分岐を ;; で終了し、| でパターンを組み合わせ、*) をデフォルトとして使います。値に基づく分岐や引数の振り分けでは、長い if-elif の連鎖より case を使うと、コードをすっきりと保てます。

よくある質問

「case文とパターンマッチング」レッスンは無料ですか?

はい。「case文とパターンマッチング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「case文とパターンマッチング」で何を学びますか?

複数の値をすっきり分岐処理します。case文、globパターン、複数パターンのマッチングを学び、長いif-elifチェーンよりcase文が適している理由を理解します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「case文とパターンマッチング」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ループ構文(for、while)
  2. Bashスクリプトの関数
  3. スクリプトの引数とオプション($@、$#、getopts)
  4. case文とパターンマッチング
← DevOps Bootcampに戻る