Bashのケース文を使ったスクリプト例とその活用法について解説

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

このスクリプトは、ユーザーがyYn、または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形式ファイルを一括で指定することも可能です。

ケース文の活用法まとめ

ケース文は多様な用途に使用でき、特に以下のシナリオで有効です:

  1. 選択メニューの作成: ユーザーから特定のオプションを選ばせるインタラクティブなスクリプト構築。
  2. ファイル操作: ファイル拡張子や名前に基づいて異なる処理を行う場合。
  3. プロセス管理: サーバーやデーモンのステータスチェックに応じたアクションを自動化。
  4. エラーハンドリング: ステータスコードや戻り値に基づくエラーハンドリング。

ケース文を使用することで、スクリプトは単に機能的であるだけでなく、可読性とメンテナンス性も向上します。分岐が多い場合や使い分けが煩雑な場合にも、ケース文を使えば整然とした構造が実現可能です。

Bashのケース文を使いこなすことで、システム管理やデータ処理の自動化をより効果的かつ効率的に行うことができます。うまく活用して、日々のタスクを大幅に軽減させましょう。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする
未分類

コメント

タイトルとURLをコピーしました