シェルスクリプトのcase文は、ある条件に対していくつかの場合分けを行い、条件が一致したときに対応する処理を実行する処理です。変数には整数と文字列が使用できます。条件一致の判断は pattern を並べた順番に行われ、一致した最初の処理が実行されます。pattern の条件には、ワイルドカードを使うことができます。「* ? [a-z]」などです。
スポンサーリンク
case文 の書き方
case 変数 in pattern1) command-list ;; pattern2) command-list ;; pattern3) command-list ;; ... esac
case文 の使い方
簡単な例で「case文」を使ってみましょう。
例1. 文字列の判断
#! /bin/sh AAA=abc case "$AAA" in AAA) echo '$AAA is AAA' ;; abc) echo '$AAA is abc' ;; ABC) echo '$AAA is ABC' ;; esac echo "done"
$AAA is abc done
例2. 文字列の判断 ワイルドカード’?’
#! /bin/sh AAA=abc case "$AAA" in AAA) echo '$AAA is AAA' ;; a?c) echo '$AAA is a?c' ;; ABC) echo '$AAA is ABC' ;; esac echo "done"
$AAA is a?c done
例3. 文字列の判断 ワイルドカード’*’
#! /bin/sh AAA=abc case "$AAA" in *) echo '$AAA is *' ;; abc) echo '$AAA is abc' ;; ABC) echo '$AAA is ABC' ;; esac echo "done"
$AAA is * done
例4. 文字列の判断 分岐処理で複数のコマンドを処理する
#! /bin/sh AAA=abc case "$AAA" in *) echo '$AAA is *' | cut -d' ' -f3 > aaa.txt ;; abc) echo '$AAA is a?c' ;; ABC) echo '$AAA is ABC' ;; esac echo "done"
$ cat aaa.txt *
ポイント
- case – 条件 – パターン – esac が最小構成です。
- 最初に一致したパターンに対応する分岐処理が実行されます。
- 分岐処理には、複数のコマンドを並べることができます。
- 条件に一致しない場合、処理は実行されません。
- パターンには、ワイルドカードを使用することができます。
スポンサーリンク