Shellスクリプトでcase文の使い方メモ

bash(sh)でcase文を書くときの基本は次のような感じです。

case $変数 in
  パターン1)
    実行したい内容1
    ;;
  パターン2)
    実行したい内容2
    ;;
esac

ということで、case文でよく使われるパターンを2つほど紹介してみようと思います。

曜日ごとに異なる内容を実行したい場合(cronで便利です)

case `date +%a` in
  'Sun')
    日曜日に実行したい内容
    ;;
  'Mon')
    月曜日に実行したい内容
    ;;
  'Tue')
    火曜日に実行したい内容
    ;;
  'Wed')
    水曜日に実行したい内容
    ;;
  'Thu')
    木曜日に実行したい内容
    ;;
  'Fri')
    金曜日に実行したい内容
    ;;
  'Sat')
    土曜日に実行したい内容
    ;;
esac

ランダムで何か実行したい場合

case `expr $RANDOM % 3` in
  0)
    3分の1の確率で実行したい内容
    ;;
  1)
    3分の1の確率で実行したい内容
    ;;
  2)
    3分の1の確率で実行したい内容
    ;;
esac

関連記事

シェル(bash)のforループに関する覚え書き
シェル(bash)のforループに関する覚え書き forループ 使い方 $ for i in 1 aa 012; do echo $i; done 1 aa 012 1~100の数字でforループしたい場合 $ for i in {1..100} do echo $i; done 1 2 3 ... 以下、省略 ...

Bashで連続した数字のループを回す簡単な方法
{1..5}のようにすることで、1〜5でループすることができます。 for i in {1..5} do echo $i done {..}はループ以外でも使うことができるので便利です。 $ touch file-{1..5}.txt $ ls file-1.txt file-2.txt file-3.txt file-4.txt file-5.txt リンク...

シェル(bash)でスペースの代わりに改行区切りでforループする方法
シェル(bash)のforループを使うとスペース区切りの文字列でループしてコマンドを実行することができます。(参考:forループに関する覚え書き) 便利な機能ですがスペースではなく改行\nでループしたい場合もあるかと思います。そういう場合にはIFSを使ってdelimiterを変更するテクニックがあるそうです。 使い方 今回は次のようなテキストファイルを使って1行ずつコマンドを実...

bashのスクリプトでif節やelif節を空にするとエラー
bashのスクリプトでifを使う時、then〜fi間に何のコマンドも含んでいないスクリプトはエラーになってしまいます。 if [ $value = "abc" ] then # 何もしない fi エラーの内容 bash: syntax error near unexpected token `fi' 何もしない分岐は削除すればいいだけですが、elif節やels...

コメントを残す

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