シェルスクリプト case 条件分岐 スクリプトの書き方

バイオインフォ道場、くまぞうです。

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 が最小構成です。
  • 最初に一致したパターンに対応する分岐処理が実行されます。
  • 分岐処理には、複数のコマンドを並べることができます。
  • 条件に一致しない場合、処理は実行されません。
  • パターンには、ワイルドカードを使用することができます。
スポンサーリンク



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です