Categories: linux

Linuxで効率よく繰り返し処理!for文を使ったループ処理の基本と応用

Linuxでは日常的に同じ作業を何度も繰り返すことがあります。たとえば複数のファイルに対して同じ操作をしたい場合や、連番で処理を行いたい場面です。そんなときに活躍するのが「for文」です。Linuxのfor文は、シェルスクリプトだけでなく、コマンドライン上でも手軽に使える強力なループ構文です。この記事では、Linuxのfor文の基本的な使い方から、応用的なテクニックまでをわかりやすく解説します。初心者の方もこれを読めば、ループ処理がぐっと身近になるはずです。


for文の基本構文を知ろう

Linuxでのfor文の基本構文は以下の通りです。

for 変数 in 値1 値2 値3 ...  
do
コマンド
done

この構文では、「変数」が「値1」「値2」「値3」…を順に取りながら、「do~done」の中に書かれたコマンドを繰り返し実行します。たとえば、次のように記述すれば、3つの文字列を順に出力できます。

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

実行結果:

I like apple  
I like banana
I like orange

これだけでも簡単に繰り返し処理ができることがわかります。


数値を使ったループ処理の方法

for文は数値の繰り返し処理にも便利です。seq コマンドを使うことで、連番を生成してループさせることができます。

for i in $(seq 1 5)  
do
echo "Number $i"
done

実行結果:

javascriptコピーする編集するNumber 1  
Number 2  
Number 3  
Number 4  
Number 5

seqにはステップ数を指定することもできます。

seq 開始値 ステップ値 終了値

例:

for i in $(seq 1 2 9)  
do
echo "Step $i"
done

結果:

Step 1  
Step 3
Step 5
Step 7
Step 9

ファイルに対して一括処理を行う

Linuxのfor文は、複数のファイルをまとめて処理したいときにも便利です。たとえば、あるディレクトリにあるすべての .txt ファイルに対して何らかの操作を行いたいときは以下のように記述できます。

for file in *.txt  
do
echo "Processing $file"
# cat $file などの処理が可能
done

ワイルドカードを使って簡単に対象ファイルを指定できるのもfor文の魅力のひとつです。


コマンドの結果に対してループ処理をする

Linuxでは、コマンドの実行結果をループで処理することもできます。たとえば、カレントディレクトリのサブディレクトリ名を列挙し、それぞれに対して処理を行いたい場合は以下のようにします。

for dir in $(ls -d */)  
do
echo "Directory: $dir"
done

注意点として、スペースや特殊文字を含むファイル名やディレクトリ名を扱う場合は、findコマンドとwhile readの方が安全です。


インデックス付きでループさせる応用例

インデックス番号を付けてループ処理したい場合には、以下のように書くことも可能です。

i=1  
for name in Alice Bob Carol
do
echo "$i: $name"
i=$((i+1))
done

結果:

1: Alice  
2: Bob
3: Carol

$(( ))を使えば簡単に数値演算ができるため、ループカウンタも自在に扱えます。


実用的な例:ファイル名の一括変更

たとえば、.jpgファイルに連番をつけてリネームしたい場合には、次のようなfor文が役立ちます。

i=1  
for file in *.jpg
do
mv "$file" "image_$i.jpg"
i=$((i+1))
done

このスクリプトを使えば、同じ拡張子のファイルに対して簡単に名前を統一できます。


実用的な例:複数サーバーにコマンドを一括実行

サーバー管理をしている場合、複数のホストに同じ処理を実行したいときにもfor文は有効です。

for host in server1.example.com server2.example.com server3.example.com  
do
ssh "$host" "uptime"
done

このようにすれば、簡単に各サーバーの稼働状況などを確認できます。ただし、SSH接続にはパスワードレス設定(公開鍵認証)をしておくとスムーズです。


実用的な例:バックアップ処理の自動化

特定のディレクトリ内のファイルをバックアップ用ディレクトリにコピーする処理もfor文で簡単に実現できます。

mkdir -p backup  
for file in *.conf
do
cp "$file" backup/"$file.bak"
done

このようにしておけば、設定ファイルのバックアップも一括で安全に作成できます。


エラー処理も考慮したfor文

for文の中でエラー処理を取り入れることも可能です。たとえば、ファイルが存在しない場合にメッセージを出すような処理です。

for file in *.log  
do
if [ -f "$file" ]; then
echo "$file exists, processing..."
else
echo "$file does not exist"
fi
done

このようなチェックを加えることで、予期しないエラーを防ぐことができます。


まとめ

Linuxのfor文は、繰り返し処理を簡潔に、効率的に記述できる便利な構文です。基本的な使い方から応用まで、多くの場面で活用できます。とくに複数ファイルの処理や一括作業、サーバー管理やログ確認など、現場で使えるテクニックが豊富に存在します。

for文をマスターすれば、日常のタスクが一気に効率化されること間違いなしです。初心者の方はまず基本形から試し、少しずつ応用的な使い方にも挑戦してみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。