Bashのcase文をマスターする:初心者向けガイド

January 18, 2025

Bashスクリプトを作成する際、複数の条件を簡潔に処理するにはcase文が便利です。if-else文を使うよりも読みやすく、条件分岐が多い場合には特に有効です。本記事では、Bashのcase文の基本構文から応用例までを初心者向けに解説します。


1. Bashのcase文の基本構文

case文は、特定の値に基づいて実行する処理を分岐させる際に使用されます。

構文:


case 値 in
    パターン1)
        # パターン1に一致した場合のコマンド
        ;;
    パターン2)
        # パターン2に一致した場合のコマンド
        ;;
    *)
        # どのパターンにも一致しない場合のコマンド
        ;;
esac

例:

以下の例では、入力された値に基づいて異なるメッセージを出力します。


#!/bin/bash

echo "入力してください: "
read input

case $input in
    "yes")
        echo "はいを選択しました"
        ;;
    "no")
        echo "いいえを選択しました"
        ;;
    *)
        echo "不明な入力です"
        ;;
esac

出力例:


入力してください: yes
はいを選択しました

2. 数値や文字列のパターンマッチング

case文では、数値や文字列、ワイルドカードを使用してパターンを指定できます。

例:数値のパターン


#!/bin/bash

echo "数値を入力してください: "
read num

case $num in
    1)
        echo "数値は1です"
        ;;
    [2-5])
        echo "数値は2から5の間です"
        ;;
    *)
        echo "数値が範囲外です"
        ;;
esac

出力例:


数値を入力してください: 3
数値は2から5の間です

3. ワイルドカードと正規表現

case文では、ワイルドカード(*)や正規表現を使って柔軟な条件分岐が可能です。

例:ファイル拡張子の判定


#!/bin/bash

file="example.txt"

case $file in
    *.txt)
        echo "これはテキストファイルです"
        ;;
    *.jpg | *.png)
        echo "これは画像ファイルです"
        ;;
    *)
        echo "不明なファイル形式です"
        ;;
esac

出力例:


これはテキストファイルです

4. 複数条件の処理

case文を使うと、複数の条件を効率的に処理できます。

例:メニュー選択


#!/bin/bash

echo "メニューを選択してください: "
echo "1. スタート"
echo "2. ストップ"
echo "3. リセット"
read choice

case $choice in
    1)
        echo "スタートが選択されました"
        ;;
    2)
        echo "ストップが選択されました"
        ;;
    3)
        echo "リセットが選択されました"
        ;;
    *)
        echo "無効な選択です"
        ;;
esac

5. 実用的な応用例

以下は、case文を使った実践的な例です:

例1:シンプルなスクリプト実行フロー


#!/bin/bash

action=$1

case $action in
    start)
        echo "サービスを開始します"
        ;;
    stop)
        echo "サービスを停止します"
        ;;
    restart)
        echo "サービスを再起動します"
        ;;
    *)
        echo "使用方法: $0 {start|stop|restart}"
        ;;
esac

例2:ネットワークステータスの確認


#!/bin/bash

echo "ネットワークステータスを確認中..."
status=$(ping -c 1 google.com > /dev/null 2>&1 && echo "online" || echo "offline")

case $status in
    online)
        echo "インターネット接続は正常です"
        ;;
    offline)
        echo "インターネット接続がありません"
        ;;
esac

まとめ

Bashのcase文を活用することで、複数の条件を簡潔かつ効率的に処理できます。初心者の方でも、基本構文を理解するだけで柔軟なスクリプトを作成できます。

さらにBashスクリプトを学びたい方は、私たちのBashスクリプトチートシートもご覧ください!初心者から上級者まで役立つ情報が満載です。