条件分岐
if文
elseが無いif文はこんな感じ
if 条件式 then 処理 fi
then節とelse節がある場合
if 条件式 then 処理1 else 処理2 fi
else ifみたいなのが付く場合
if 条件式1 then 処理1 elif 条件式2 then 処理2 elif 条件式3 then 処理3 else 処理4 fi
case文
switch case文みたいな構文もあるそうだ。
month=$1 case $month in 12|1|2) echo "winter";; 3|4|5) echo "spring";; 6|7|8) echo "summer";; 9|10|11) echo "autumn";; *) echo "no such season";; esac
これをseason.shって名前つけて、chmod +x して実行してみると
./season.sh 10
autumn
- なぜ$month=$1じゃないの?caseの行でmonthに$が付くのはなぜ?
- 演算子=の両側にスペースつけじゃダメっぽい。
- 引数である$1は文字列だからmonthもなのかな?そうなら"12"|"1"|"2"とかしなくていいのかな?...と思ってやってみたらそれでもエラーにならなかった。暗黙の型変みたいなのがあるのかな?
- 最後のワイルドカードを"*"ってやると、さすがにダメだった。
特に最初の2つが理解できない。