Shellの基礎知識(入門編)

【Shell入門】ループ処理(for文)を使ってみよう

繰り返し処理を自動化する「for文」は、Shellスクリプトでも非常によく使われます。たとえば「複数のファイルに順番に処理をする」「1〜5の数字を繰り返し表示する」など、作業の効率を大きく向上させてくれる構文です。今回はfor文の基本構文と、シンプルな実行例を体験しながら学んでいきましょう。

Shellの基礎知識

🟡 Shell の基礎知識(入門編)
📌 「動かす楽しさ」を最短で体感!Shellの第一歩をここから。

├─【Shell入門①】VSCode+WSLでShellを始めよう! 
├─【Shell入門②】echoで文字を表示してみよう 
├─【Shell入門③】変数を使って計算しよう 
├─【Shell入門④】条件分岐(if文)で処理を分けよう 
├─【Shell入門⑤】ループ処理(for文)を使ってみよう 
├─【Shell入門⑥】関数で処理をまとめてみよう 
└─【Shell入門⑦】アンケート集計スクリプトを作ってみよう 

🟡 Shell の基礎知識(基礎編)
📌 条件分岐やループなど、実務で通用する基本操作を網羅。

🟡 Shell の基礎知識(実践編)
📌 現場レベルの自動化スクリプトを実装しながら学ぶ実戦形式。

for文とは?くり返し処理の基本構文

何度も同じ処理を繰り返したいときに便利なのが、Shellスクリプトの「for文」です。「1〜5まで繰り返す」「複数の名前を順番に表示する」といった処理が、たった数行で書けるようになります。

なお、for文の練習はターミナルに直接入力しても、VSCodeでファイルを作って実行しても問題ありません。自分に合った方法で気軽に試してみましょう。

初めてのfor文 ― 数字を1〜5まで表示してみよう

まずは基本のfor文構文を使って、1から5までの数字を順番に表示してみましょう。

for i in 1 2 3 4 5; do
  echo "数字は $i です"
done

出力結果:

数字は 1 です
数字は 2 です
数字は 3 です
数字は 4 です
数字は 5 です

ルーキー
あれ?勝手に数字が変わってる!これがループか…!
そうそう。変数iが1つずつ順番に変わって、echoで表示されてるんだ。これがfor文の基本形だよ。
ビープロ

この「for i in 値...」の部分で、繰り返し対象の値を指定できます。

range風の展開や文字列の繰り返しもできる?

for文は数字だけでなく、文字列やファイル名など、リスト化できるものであれば何でも繰り返し処理が可能です。

for name in BePro Rookie Hello; do
  echo "$name を処理中"
done

出力結果:

BePro を処理中
Rookie を処理中
Hello を処理中

ルーキー
変数って文字でもいいんだね!数字しかダメなのかと思ってた…!
Shellのfor文はけっこう柔軟なんだよ。文字列もファイル名もいけるし、あとはどう使うか次第!
ビープロ

このように、for文は数値だけに限らず、さまざまな値を対象に繰り返し処理ができる構文です。次のセクションでは、実際に応用的な使い方にチャレンジしてみましょう。

実践:for文でメッセージを繰り返そう

ここからは、for文を使って実際に複数回の出力を行う練習をしてみましょう。同じ処理を何度も書かなくても、ループによって自動で繰り返しが行えるようになります。

ループ内のprintで複数回の出力

まずは「同じメッセージを5回表示する」という処理をfor文で実装してみましょう。

ここで使っている $i は、for文の中で自動的に使われる「ループ変数」です。毎回異なる値を一時的に保持し、繰り返し処理で活用されます。

for i in 1 2 3 4 5; do
  echo "Hello, Shell!"
done

出力結果:

Hello, Shell!
Hello, Shell!
Hello, Shell!
Hello, Shell!
Hello, Shell!

ルーキー
おぉ、5回ちゃんと出た!たった3行のスクリプトで…これは便利だね!
うん、こういう「繰り返し作業」が得意なのがShellスクリプトの魅力の一つなんだ。
ビープロ

このように、echoなどのコマンドをループ内に書けば、何回でも同じ処理を繰り返すことができます。

変数と組み合わせて動的に表示

次は、変数を使って「何回目の出力か」を動的に表示する方法を試してみましょう。

for i in 1 2 3; do
  echo "$i 回目の処理を実行中…"
done

出力結果:

1 回目の処理を実行中…
2 回目の処理を実行中…
3 回目の処理を実行中…

ルーキー
わかりやすい!「$i」で今のループの回数がわかるんだね!
その通り!この$iはループのたびに自動で変化する「一時的な変数」みたいなもの。名前は何でもOKだよ。
ビープロ

なお、 i は「iterator(繰り返すもの)」の頭文字として使われるのが慣例ですが、 itemname など、任意の変数名でも構いません。

こうして、for文の中で変数を活用すると「毎回異なる値を使った処理」ができるようになります。次のセクションでは、つまずきやすいポイントとエラーの対処について解説していきます。

for文でつまずかないためのポイント

for文は便利ですが、書き方に少しクセがあるため、初心者がつまずきやすいポイントもあります。ここでは代表的な注意点を確認しておきましょう。

スペースとセミコロンの使い方に注意

Shellスクリプトでは、文法的にスペースやセミコロンの位置がとても重要です。for文も例外ではありません。

たとえば以下は正しい書き方です:

for i in 1 2 3; do
  echo $i
done

一方、以下のようにスペースやセミコロンが抜けていると、エラーになる場合があります:

for i in 1 2 3do
  echo $i
done

ルーキー
あっ、スペースひとつ抜けただけでエラーになるの!?
そうなんだ。Shellは細かい構文ミスに厳しいから、最初は気をつけて見直すクセをつけておくといいよ。
ビープロ

基本の構文は for 変数 in 1 2 ... ; do のように、セミコロンか改行が必要な点に注意してください。

配列・文字列との相性と制限事項

Shellのfor文はシンプルですが、扱えるデータには多少制限があります。たとえば、スペースを含んだ文字列を1つの要素として扱いたい場合、クオートで囲まないと意図通りに動作しません。

例:

for name in "Be Pro" "Rookie Dev"; do
  echo "$name"
done

出力結果:

Be Pro
Rookie Dev

ルーキー
クオートで囲んでないと「Be」と「Pro」が別々になるんだね…!
うん。スペースが入ってると、Shellはそれを区切りとして認識しちゃうから、まとめて扱いたいときは " " で囲むのが基本だよ。
ビープロ

また、Bashの配列のような高度な使い方は、POSIX準拠のシェルではそのまま使えないこともあります。入門の段階では、まずはシンプルなリストでの繰り返しに慣れていきましょう。

次のステップにつなげよう!

for文の基本構文をマスターすれば、単純な繰り返しだけでなく、条件分岐や関数と組み合わせたより実践的なスクリプト作成にもつながっていきます。

条件分岐と組み合わせることで実用度アップ

たとえば、繰り返しの中で「ある条件を満たす場合だけ処理を行う」といった分岐を組み込めば、より柔軟な処理が可能になります。

for num in 1 2 3 4 5; do
  if [ "$num" -eq 3 ]; then
    echo "3だけ特別な処理!"
  fi
done

ルーキー
あ、これ if文と組み合わせてるんだ!forだけじゃなくて、条件も加えられるんだね!
うん、ここまで来たら立派なスクリプトの入口だよ。次はforとifを組み合わせて、もっと複雑なことができるようになるはず。
ビープロ

このように、条件分岐と組み合わせれば、より柔軟で実用的な処理を記述できるようになります。

Shellの基礎知識でfor文の応用例を学びたい方へ

今回の記事ではfor文の基本と簡単な応用に触れましたが、「もっと実践的な使い方」や「業務スクリプトでの使い方」を深く学びたい方には、下記の関連記事もおすすめです。

ルーキー
ここまで読めたってことは、もう初心者卒業間近かも…!?
うん!この調子で、次はもっと実践的なステップにチャレンジしていこう!
ビープロ

次回は、繰り返しと相性の良い「関数」を使ったスクリプト作成に挑戦してみましょう!

▶ 続きはこちら:Shell入門:関数で処理をまとめてみよう

よく読まれている記事

1

IT入門シリーズ 🟢 STEP 1: ITの基礎を知る(ITとは何か?) 📌 IT初心者が最初に学ぶべき基本知識。ITの概念、ネットワーク、OS、クラウドの仕組みを学ぶ ...

2

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか?無料で使えるだけでなく、高い柔軟性 ...

3

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Shellの基礎知識(入門編)