Bashスクリプトは、LinuxやUnixベースのシステムで多く使用されている強力なツールです。システム管理や自動化タスクの処理において欠かせないものとなっています。その中でも、条件分岐を活用する際に役立つのが「ケース文」です。この記事では、Bashのケース文の基本的な使い方から、実用的な活用法までを詳しく解説します。
ケース文とは
Bashのケース文は、ある変数の値に基づいて異なる処理を実行するための条件分岐構造です。if
文も類似の目的で使用されますが、ケース文は特に値の一致を判定する場合において、コードをよりシンプルかつ読みやすくするのに適しています。
基本的な構文は以下の通りです:
case $variable in
pattern1)
# commands for pattern1
;;
pattern2)
# commands for pattern2
;;
*)
# default commands
;;
esac
$variable
の値がpattern1
に一致する場合、pattern1
の下のコマンドが実行されます。同様にpattern2
に一致する場合は、その下のコマンドが実行されます。*
はデフォルト値としてどのパターンにも一致しない場合の処理を定義します。
ケース文の基本例
まずは基本的な例を見てみましょう。この例では簡単なユーザー入力に基づいてメッセージを表示します。
#!/bin/bash
echo "Enter y or n: "
read answer
case $answer in
y|Y)
echo "You selected yes."
;;
n|N)
echo "You selected no."
;;
*)
echo "Invalid input."
;;
esac
このスクリプトは、ユーザーがy
、Y
、n
、またはN
を入力すると、それに応じたメッセージを表示します。|
を使うことで複数のパターンを同時に評価できます。
ケース文の実用的な活用法
ケース文は条件の数が多い場合や複雑な条件分岐が必要な場合に非常に役立ちます。次に、もう少し複雑なスクリプトを考えてみましょう。これはサーバーのステータスをチェックし、状態に応じてアクションを取る例です。
#!/bin/bash
status=$(curl -s -o /dev/null -w "%{http_code}" http://example.com)
case $status in
200)
echo "Server is running smoothly."
;;
500)
echo "Server is having internal issues."
;;
404)
echo "Page not found. Please check the URL."
;;
*)
echo "Got unknown status code: $status"
;;
esac
このスクリプトは、HTTPステータスコードに基づいて異なるメッセージを表示します。特定のステータスコード(例えば200、500、404)に対して専用のメッセージを設定し、それ以外のコードに対してはデフォルトのメッセージを使用します。
ケース文のパターンマッチング
ケース文では、ワイルドカードや範囲指定、正規表現のようなパターンを使ってより高度なマッチングを行うことも可能です。
#!/bin/bash
read -p "Enter a file extension (e.g., jpg, txt, pdf): " ext
case $ext in
jpg|jpeg)
echo "You have chosen an image file."
;;
txt|text)
echo "You have chosen a text file."
;;
pdf)
echo "You have chosen a PDF document."
;;
*)
echo "Unrecognized file extension."
;;
esac
この例では、ユーザーが入力したファイル拡張子に基づいて、異なるメッセージを表示します。ワイルドカードを用いることで、例えば.jp*
としてJPEG形式ファイルを一括で指定することも可能です。
ケース文の活用法まとめ
ケース文は多様な用途に使用でき、特に以下のシナリオで有効です:
- 選択メニューの作成: ユーザーから特定のオプションを選ばせるインタラクティブなスクリプト構築。
- ファイル操作: ファイル拡張子や名前に基づいて異なる処理を行う場合。
- プロセス管理: サーバーやデーモンのステータスチェックに応じたアクションを自動化。
- エラーハンドリング: ステータスコードや戻り値に基づくエラーハンドリング。
ケース文を使用することで、スクリプトは単に機能的であるだけでなく、可読性とメンテナンス性も向上します。分岐が多い場合や使い分けが煩雑な場合にも、ケース文を使えば整然とした構造が実現可能です。
Bashのケース文を使いこなすことで、システム管理やデータ処理の自動化をより効果的かつ効率的に行うことができます。うまく活用して、日々のタスクを大幅に軽減させましょう。
コメント