case
コマンドは、指定したパターンに基づいて条件分岐を行うためのコマンドです。特に、複数の条件を簡潔に処理する際に便利です。
基本的な構文は以下の通りです。
case [変数] in
[パターン1]) [コマンド1];;
[パターン2]) [コマンド2];;
...
esac
case
コマンドには特別なオプションはありませんが、パターンマッチングにおいて以下の点に注意が必要です。
*
: 任意の文字列にマッチします。?
: 任意の1文字にマッチします。[...]
: 指定した文字のいずれか1文字にマッチします。set fruit = "apple"
case $fruit in
"apple") echo "リンゴです";;
"banana") echo "バナナです";;
*) echo "未知の果物です";;
esac
set number = 5
case $number in
1|2|3) echo "1から3の範囲です";;
4|5|6) echo "4から6の範囲です";;
*) echo "それ以外の数字です";;
esac
set file = "document.txt"
case $file in
*.txt) echo "テキストファイルです";;
*.jpg) echo "画像ファイルです";;
*) echo "その他のファイルです";;
esac
case
コマンドは、複数の条件を簡潔に処理できるため、スクリプトの可読性が向上します。case
を使用すると、予期しない動作を避けることができます。