クマの手も借りたい
茶トラネコ(@kumanotemo)です。上場を控えたITベンチャーを2社も退職してフリーランスの道を選んだ放浪エンジニアです。
シェル

シェルスクリプトで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 コマンドについては下記で確認してみてください。

現場のプロから学ぶSEO技術

SEO について詳しくないけどこれから学んでみたい方。

これまでの小手先の SEO に対する技術には詳しいけど、マーケティングやソーシャル要素を組み合わせた今時の SEO をもう一度勉強してみたい方にオススメです。

あなたにオススメ