Bashのcase文 - パターンマッチングスイッチ

パターンマッチング制御フローのためのbashのcase文を学びます。基本パターン、ワイルドカード、ORパターン、引数解析やメニューの実践例をカバーします。

Control Flow

詳細な説明

Bashのcase文

case文はswitch文に似たパターンマッチングを提供します。変数を複数のパターンに対してマッチングする場合、複数のif/elifチェーンよりもきれいです。

基本構文

case "$variable" in
  pattern1)
    commands
    ;;
  *)
    default commands
    ;;
esac

サービス制御スクリプト

case "$1" in
  start)  echo "サービスを開始中..." ;;
  stop)   echo "サービスを停止中..." ;;
  restart) $0 stop; sleep 2; $0 start ;;
  *)      echo "Usage: $0 {start|stop|restart}"; exit 1 ;;
esac

パターンマッチング機能

# ORパターン
case "$input" in
  yes|y|Y) echo "確認済み" ;;
  no|n|N)  echo "キャンセル" ;;
esac

# ワイルドカード
case "$filename" in
  *.tar.gz|*.tgz) tar -xzf "$filename" ;;
  *.zip)          unzip "$filename" ;;
  *)              echo "不明なファイルタイプ" ;;
esac

ユースケース

case文はサービスの初期化スクリプト(start/stop/restart)、コマンドライン引数の解析、拡張子に基づくファイルタイプの検出、対話型メニューシステム、値を複数のパターンに対してマッチングする必要があるすべてのシナリオに最適です。

試してみる — Bash Cheat Sheet

フルツールを開く