case文とパターンマッチング
複数の値をすっきり分岐処理します。case文、globパターン、複数パターンのマッチングを学び、長いif-elifチェーンよりcase文が適している理由を理解します。
「case文とパターンマッチング」はCoddyKit上の無料Linux Command Line & Bash Scripting Masteryレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Command Line & Bash Scripting Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Command Line & Bash Scripting Masteryコースには全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";;
esacGlob パターン
パターンには正規表現ではなくシェルの 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";;
esaccase と 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チューター)、Linux Command Line & Bash Scripting Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Command Line & Bash Scripting Masteryコースには全4レッスンが含まれています。
「case文とパターンマッチング」で何を学びますか?
複数の値をすっきり分岐処理します。case文、globパターン、複数パターンのマッチングを学び、長いif-elifチェーンよりcase文が適している理由を理解します。 ブラウザで直接実行するハンズオンコードでLinux Command Line & Bash Scripting Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Command Line & Bash Scripting Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Command Line & Bash Scripting Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「case文とパターンマッチング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Command Line & Bash Scripting Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Command Line & Bash Scripting Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ループ構文(for、while)
- Bashスクリプトの関数
- スクリプトの引数とオプション($@、$#、getopts)
- case文とパターンマッチング