Linuxでは日常的に同じ作業を何度も繰り返すことがあります。たとえば複数のファイルに対して同じ操作をしたい場合や、連番で処理を行いたい場面です。そんなときに活躍するのが「for文」です。Linuxのfor文は、シェルスクリプトだけでなく、コマンドライン上でも手軽に使える強力なループ構文です。この記事では、Linuxの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 file in *.log
do
if [ -f "$file" ]; then
echo "$file exists, processing..."
else
echo "$file does not exist"
fi
done
このようなチェックを加えることで、予期しないエラーを防ぐことができます。
Linuxのfor文は、繰り返し処理を簡潔に、効率的に記述できる便利な構文です。基本的な使い方から応用まで、多くの場面で活用できます。とくに複数ファイルの処理や一括作業、サーバー管理やログ確認など、現場で使えるテクニックが豊富に存在します。
for文をマスターすれば、日常のタスクが一気に効率化されること間違いなしです。初心者の方はまず基本形から試し、少しずつ応用的な使い方にも挑戦してみてください。