クマの手も借りたい
馬とテニスとリラックマが好きな IT 系のエンジニアです。
シェル

シェルスクリプトでwhile文を使ってループ処理をする

今までシェルでループ処理をする場合、for 文を使う機会が非常に多かったのですが、特定の条件の間だけ処理を繰り返すには while 文が最適です。

今回は、while 文の使い方と使えるシチュエーションについて紹介していきます。

whileの基本構文

while の基本構文は以下の通りです。

while [条件式]; do
 処理
done

条件の後の「セミコロン」と「do」については、「do」の前で改行して以下のように書くこともできます。

while [条件式]
do
 処理
done

書き方は好みによりけりなので、自分の中で統一するかプロジェクトに合わせるようにするといいですね。

条件式の書き方

例えば、5 回処理を繰り返したい場合は、整数型の変数 i を 1 で初期化しておき、条件式に i が 6 より小さい間と定義します。

if 文と同じように条件式は [] で囲みます。

#!/bin/sh

declare -i i=1

while [ i -lt 6 ]; do
 echo "i: ${i}"
 i=i+1
done

結果は以下の通り。

i: 1
i: 2
i: 3
i: 4
i: 5

ちなみに条件式に使う [ ですが、実はこれ単体で Linux のコマンドって知ってましたか?

それぞれの括弧の使い方については、下記のサイトに詳しく書かれていますので興味があれば見てください。

ファイルを1行ずつ最後まで読み込みたい

また、以前紹介したファイルを 1 行ずつ読み込んでような処理にも while 文が活躍します。

あわせて読みたい
シェルスクリプトでファイルを1行ずつ読み込むシェルスクリプトで、ファイルに書かれた内容を 1 行ずつ処理したいケースってたまにありますよね。 いくつか方法はあるのですが、ファ...

この場合は標準入力から読み込む read コマンドを使います。

while read line; do
 echo ${line}
done < ファイル

read コマンドについては下記で確認してみてください。

Web API The Good Parts

オライリーの「Web API」に特化した本です。最近の多くの Web サービスは API が活用されていますが、その技術はこれまでの Web サイトとそれほど大きく変わりません。

今後、マイクロサービス化が進む中で知っておいて損はない内容が詰め込まれており、現場のエンジニアやこれから Web 系のエンジニアを目指す人にもオススメの一冊です。

created by Rinker
¥2,376
(2018/09/20 11:58:13時点 Amazon調べ-詳細)

あなたにオススメ