シェルスクリプトの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 が最小構成です。
- 最初に一致したパターンに対応する分岐処理が実行されます。
- 分岐処理には、複数のコマンドを並べることができます。
- 条件に一致しない場合、処理は実行されません。
- パターンには、ワイルドカードを使用することができます。
スポンサーリンク
![バイオインフォ 道場 [bioinfo-Dojo]](https://bioinfo-dojo.net/wp-content/uploads/2016/03/some_object_luca-bravo-alS7ewQ41M8-unsplash.jpg)

