Lから始まるLinux

3章8話
for文(使い方)
3章9話 for文(実践)
もくじ
3章10話
while文(使い方)
for文(実践)
若木 みどり
前回はfor文を教えてもらったよ! 繰り返し処理に便利なんだ!
若木 しげる
今回はfor文で シェルスクリプトを 書いていこう!
実践
若木 しげる
今回はカウントダウンをしてくれる countdown スクリプトを作るよ まずはエディタを開いてね
vim countdown
若木 みどり
うん!
若木 しげる
次に以下の内容を書き込んで保存してね
#!/bin/bash

echo -n "カウントダウン開始値を入力して下さい: "
read FIRST

for COUNT in $(seq "$FIRST" -1 1)
do
  echo "$COUNT"
  sleep 1
done

若木 しげる
for文の前の内容はもう大丈夫かな?
echo -n "カウントダウン開始値を入力して下さい: "
read FIRST
若木 みどり
大丈夫!入力を促すメッセージを表示してread がキーボード入力を受け取りその値を FIRST 変数に代入してくれるんだよ!
若木 しげる
read の使い方はもう大丈夫だね!

若木 しげる
for文の in の後は何をしているんだろうね?
$(seq "$FIRST" -1 1)
若木 みどり
seq は数列生成コマンドだよ!$FIRST から始め、-1 ずつ値を変えながら、1 で終わる」ような数列を生成してくれるよその数列の項の数だけfor文の処理を繰り返すんだね!
若木 しげる
そのとおり!例えば 5 を入力したらこの部分は 5 4 3 2 1展開されるわけだね!

若木 しげる
最後に繰り返し処理を見ていこう!
echo "$COUNT"
sleep 1
若木 みどり
これは以下の繰り返しになるよね!
  1. COUNT 変数の値を表示
  2. 1秒待つ
若木 みどり
COUNT 変数の値はseq の働きで$FIRST から 1 まで-1 ずつ変化していくつまりカウントダウンの処理になっているんだよ!
若木 しげる
それが終わるとfor文が終わりスクリプトが終了するというわけだね!
まとめ
若木 みどり
今回はfor文を使ったシェルスクリプトを書いたよ!
若木 しげる
for文は in の後ろの値全てに対して同じ処理を行いたいときに便利なんだ