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

Linux シェル/bash

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

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

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

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

本記事の内容

この記事を書いている私は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文を利用する際の参考になりましたら幸いです。