Linuxのシェルスクリプトには他のプログラミング言語同様while文による繰り返し処理が可能です。
ここではシェルスクリプトで使用するwhile文について以下の内容で解説していきます。
・while文とは
・while文の使い方
・while文でファイルの内容を読みこむ
・while文での無限ループ
while文はシェルスクリプトの処理の中でもif文同様に使用する頻度が高い構文です。
この記事ではwhile文ついてわかりやすく解説していますので、ぜひ使い方を覚えておきましょう!
while文とは
while文は指定した条件式が真の場合にのみ繰り返し処理を実行し、条件式が偽になった場合は繰り返しのループ処理が終了します。
そのため、
- ある程度繰り返し回数が決まっている場合はfor文
- 条件が偽になるまで繰り返したい場合はwhile文
の処理をそれぞれ使うのが一般的です。
シェルスクリプトでのwhile文は以下のように記述します。
while 条件式 do 繰り返し所為 done
条件式にはif文での書式を指定することができます。
if文については以下の記事で詳しく解説しています!
while文の基本的な使い方
ここではwhile文の基本的な使い方について解説します。
while文で指定回数分繰り返したい場合、たとえば10回処理を繰り返したい場合は以下のように記述します。
#!/usr/bin/bash i=0 while [ $i -ne 10 ] do echo $i回目 i=`expr 1 + $i` done
実行結果:
0回目 1回目 2回目 3回目 4回目 5回目 6回目 7回目 8回目 9回目
このサンプルでは変数iを0で初期化し、変数iが10になった時点でループ処理を抜けています。
do~doneの処理の中ではexprで変数iの値をインクリメントして1ずつ加算しています。
また、以下の例ではコンソールから入力した文字列が”samurai”である限り処理が実行されます。
#!/usr/bin/bash read input while [ $input = samurai ] do echo engineer read input done
実行結果:
while文の応用的な使い方
ファイルの内容を一行ずつ読み込む
while文でファイルの内容を一行ずつ読み込む方法は簡単です。
ここでは以下のファイルを使用して一行ずつ読み込んでみます。
————————————
【fruits.txt】
apple
orange
melon
banana
pineapple
————————————
#!/usr/bin/bash while read line do echo $line done < fruits.txt
実行結果:
apple orange melon banana pineapple
ファイルの内容が一行ずつ読み込めました。
ファイルを読み込む場合はwhile文の式に「read line」を指定します。
また、doneのあとに「> ファイル名」の形式で読み込むファイルを指定します。
無限ループ
while文で無限ループを実施するには条件式に「true」を指定するだけで可能です。
以下ではsleep処理で1秒間隔で無限ループ処理をしています。
#!/usr/bin/bash while true do echo LOOP sleep 1 done
実行結果:
LOOP LOOP LOOP …
無限ループを終了するにはショートカットキー「ctrl」+「c」で可能です。
for文による繰り返し処理
while文が条件式が偽になるまで処理を繰り返すのに対して、for文では指定した回数分処理を繰り返したい場合に使用します。
for文については以下の記事で詳しく解説しています!
まとめ
ここでは、Linuxのシェルスクリプトでwhile文による繰り返し処理について解説しました。
- while文とは
- while文の基本的な使い方
- while文の応用的な使い方
- for文について
シェルスクリプトではwhile文を使用して繰り返し処理を行う機会は多いので使い方についてはよく理解しておきましょう。
もし、while文の使い方を忘れてしまったら、この記事を思い出してくださいね!