【Linux入門】while文による繰り返し処理をわかりやすく解説!

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_image01

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文の使い方を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次