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スクリプトチートシートもご覧ください!初心者から上級者まで役立つ情報が満載です。