【bash】for〜inループの使い方を解説【用途は様々です】

bash

bashのfor〜inループについて調べる人

bashのfor〜inループについて調べる人
「bashでfor〜in文を使用したいのですが、使い方を忘れてしまいました。正しい方法を知りたいのと、コピペできるソースコード例も欲しいです。」

こんな悩みを解決します。

bashのfor〜in文は、有限のループ処理を行いたい時に用いるフレーズです。無限ループの場合にはwhile true文を用います。

本記事の内容

  • 1.for〜inループを用いて数字をインクリメントする
  • 2.for〜inループでファイル操作を行う
  • 3.for〜inの二重ループを使う

この記事を書いている私はIT業界歴12年、年収1,000万円ちょっとの金融系エンジニアです。IRIXやSolarisなどのUnixやCygwin、mac、Linuxなど様々な環境でbashによるスクリプティングを行ってきました。

bashは極めて簡単なプログラミング言語ですが、空白の有無などで構文エラーとなること、javaなど一般的なプログラミング言語に慣れている方にとっては直感的ではない構文であることから、忘れてしまうことも多いかと思います。

あと、Qiitaとかに入門者が書いたメモの記事ですと、構文が間違っているケースがあり、少し複雑な文字列の処理ですとエラーとなってしまう書き方も散見されますので、正しい情報を発信したいと思い、記事にしました。

また本記事では、細かい構文に迷ったら、例からコピー&ペーストして使えることも目指しました。少しでもお役に立てますと幸いです。

1.for〜inループを用いて数字をインクリメントする

bashのfor〜inループを使用する

具体例

例:for〜inループで1〜10までを順に出力する

実行結果は以下の通りです。

これでbashのfor〜in文を用いて繰り返し処理を実現できました。

逆順

例:for〜inループで1〜3までを逆順に出力する

実行結果は以下の通りです。

2.for〜inループでファイル操作を行う

bashのfor〜inループでファイル操作を行う

ループ処理を使ってディレクトリ内のファイルを操作していきます。

for〜in文を用いたファイルの連続作成

具体例

例:カレントディレクトリ内のfile1.txt〜file5.txtまで順に作成する
なお、ファイルの作成にはtouchコマンドを使います。

実行結果は以下の通りです。ファイルが5つ作成されました。

for〜in文を用いたファイルのバックアップ

具体例

例:カレントディレクトリ内のファイル(.txt)のバックアップ(.backup)を作成する

この例ではlsコマンドでファイル名を一つ一つ取得し、拡張子部分(.txt)を置換した.backupファイルをcpコマンドでコピーで生成しています。

実行結果は以下の通りです。

なお、for〜in文の繰り返し条件としてファイル名を一つ一つ指定して記述しても同じ結果になります。

3.for〜inの二重ループを使う

bashでfor〜inの二重ループを使う

bashのfor〜in文は、c言語やjavaのように二重ループにして処理を行うこともできます。

具体例

二重ループを用いてディレクトリとその中にファイルを作成する例を示します。ディレクトリ名はdir1〜5、ファイル名はwindows.txt、mac.txt、linux.txtです。

  • 外側のループ(変数:x)でディレクトリを作成する
  • 内側のループ(変数:y)でファイルを作成する

実行結果は以下の通りです。各ディレクトリ内に3つのファイルが作成されました。


今回は以上です。あまり使わないので説明を省略してしまいましたが、for〜in文ではcontinue句を用いて特定の処理だけを中断して続行したり、break句を用いてループ処理そのものを中断してしまうこともできます。

本記事がbashでfor〜in文を利用する際の参考になりましたら幸いです。