第11回 for文で繰り返し処理をしてみよう:in・do・doneの基本 | はじめてのシェルスクリプト

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

第11回 for文で繰り返し処理をしてみよう:in・do・doneの基本 | はじめてのシェルスクリプト
目次

はじめに

この連載では、macOS のターミナルで sh を使いながら、シェルスクリプトの基本を順番に学んでいきます。

ここまでの回では、変数・クォート・引数・入力処理・条件分岐と、シェルスクリプトを書くための基本要素を順番に学んできました。これらを使えば「一定の条件で処理を切り替える」ことができるようになりましたね。

しかし、「同じ処理を10回繰り返す」「複数のファイルひとつひとつに同じ操作をする」といった場合、同じコードを何度もコピーするのは非効率ですし、ミスのもとになります。そこで役立つのが「繰り返し処理(ループ)」です。

第11回では、複数の値を順番に処理するための for 文を学びます。in do done という構造を理解すれば、作業の自動化がぐっと現実的になります。ループを使いこなせると、シェルスクリプトの強みが最大限に引き出せますよ。

この回で学ぶこと

  • for 文とは何か
  • for in do done の形
  • 値を順番に処理する方法
  • 複数の文字列を繰り返す例
  • ファイル名の列挙の基本
  • 反復処理の考え方
  • 初学者がつまずきやすい書き方

for 文とは何か

同じ形の処理を繰り返す

for 文は、複数の値に対して同じ処理を順番に行うための構文です。

たとえば、3つの単語を1つずつ表示したいときに使えます。

基本の形

for 文の基本形は次のようになります。

for item in apple banana orange
do
  echo "$item"
done

for のあとに変数名を書き、in のあとに順番に処理したい値を書きます。

do から done までが、繰り返して実行される部分です。

サンプルコード

for_sample.sh に次の内容を保存します。

#!/bin/sh

for fruit in apple banana orange
do
  echo "$fruit"
done

実行手順

1. ファイルを作成して保存する

エディタで for_sample.sh という名前のファイルを作成し、次の内容を保存します。

#!/bin/sh

for fruit in apple banana orange
do
  echo "$fruit"
done

2. スクリプトを実行する

次のコマンドを実行します。

sh for_sample.sh

実行結果は次のようになります。

apple
banana
orange

3. 値を追加して試す

grape を追加して、もう一度実行してみてください。

#!/bin/sh

for fruit in apple banana orange grape
do
  echo "$fruit"
done

追加した値も順番に表示されます。

コードの読み方

for fruit in apple banana orange

fruit という変数に、applebananaorange を順番に入れます。

do

ここから繰り返し処理が始まります。

echo “$fruit”

現在の fruit の値を表示します。

1回目は apple、2回目は banana、3回目は orange が入ります。

done

繰り返し処理の終わりを表します。

ファイル名の列挙にも使える

for 文は、文字列だけでなくファイル名の列挙にも使えます。

たとえば、次のように書けます。

for file in *.txt
do
  echo "$file"
done

この場合、現在のディレクトリにある .txt ファイルを順番に表示できます。

まずは「複数の値を順番に取り出して同じ処理をする」という理解で十分です。

初学者がつまずきやすい点

done を書き忘れる

for 文は、最後に done が必要です。

これがないと構文が正しく終わりません。

do の位置を崩す

do は繰り返し処理の始まりです。

for 文の形をそのまま覚えると書きやすくなります。

変数名に $ を付けてしまう

for fruit in ... のように、変数を定義するときは $ を付けません。

使うときだけ "$fruit" のように $ を付けます。

よくあるエラー

parse error near done

for 文の形が崩れている可能性があります。

for in do done の並びを確認してください。

値が思った通りに表示されない

echo "$fruit" のように、正しい変数名を使っているか確認してください。

ファイル名が表示されない

*.txt に一致するファイルが現在のディレクトリにあるか確認してください。

pwdls で現在地とファイル一覧を見ると分かりやすいです。

練習用コード

次の内容で colors.sh を作成して実行してみてください。

#!/bin/sh

for color in red blue green
do
  echo "Color: $color"
done

色の名前を追加したり、表示する文字列を変えたりして、結果がどう変わるか確認してください。

この回で理解しておくこと

  • for 文は複数の値を順番に処理するために使う
  • for in do done の形で書く
  • 繰り返しごとに変数へ1つずつ値が入る
  • 同じ処理を何度も書かずにまとめられる
  • 文字列だけでなくファイル名の列挙にも使える
  • done の書き忘れや変数の書き方に注意が必要である

まとめ

今回は、for 文を使って複数の値を順番に処理する基本を確認しました。

繰り返し処理を使えるようになると、同じ形の作業をまとめて書けるようになります。

次回は、条件付きで繰り返す while 文を学びます。

次回予告

次回は「while文で条件付きの繰り返しをしてみよう」です。

条件が成り立つ間だけ処理を繰り返す基本を確認します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次