case文(実践)
前回は
case文の
使い方を学んだね!
今回は
caseで
シェルスクリプトを
書いていこう!
おみくじの改良版
omikuji2 を作ろう!
エディタを開いて
準備してね
vim omikuji2
うん!どんな内容か楽しみ!
内容は以下のとおりだよ!
#!/bin/bash
OMIKUJI="$((RANDOM % 10))"
case "$OMIKUJI" in
0)
echo "大吉"
;;
1|2)
echo "中吉"
;;
3|4|5)
echo "小吉"
;;
*)
echo "吉"
;;
esac
算術式展開
$(( ... )) でRANDOM 変数を使っているねRANDOM 変数をいきなり使っているけど大丈夫なのかな?OMIKUJI="$((RANDOM % 10))"
RANDOM 変数はシェルが用意している特別な変数だよ値を参照するたびに0以上のランダムな数値を返すんだじゃあここの算術式展開ではランダムな数を 10 で割った余りを求めているんだね!
でも…どうして余りを使うんだろう?
10 で割れば余りは0 から 9 までの10 通りになるんだ
RANDOM 変数は大きな範囲の数を出すけど剰余を使えば簡単に範囲を絞れるんだよなるほど!ランダムな値を0 から 9 の範囲に絞っているのね!
いよいよ
case文に入っていくよcase "$OMIKUJI" in
0)
echo "大吉"
;;
1|2)
echo "中吉"
;;
3|4|5)
echo "小吉"
;;
*)
echo "吉"
;;
esac
これは分かりやすいね!
OMIKUJI 変数の値によって条件が分かれていてそれぞれの処理でおみくじの結果を表示しているんだねOMIKUJI 変数の値 | 表示される内容 |
|---|---|
0 | 大吉 |
1, 2 | 中吉 |
3, 4, 5 | 小吉 |
上記以外(6, 7, 8, 9) | 吉 |
そのとおり!「1または2」だし 「どの条件にも 当てはまらなかった場合」と わかりやすく書けるんだ
1|2) と書けば*) を使えば今回は
case文を使ってシェルスクリプトを書いたよ!最初に書いたおみくじは結果を 10 行生成して9 行捨てていたけど今回はスッキリしていて効率的だね!
こんなふうにいくつか分岐があってその中から一つ処理を選ぶという場合は
case文が有効に使えるよ