ゆう's Blog
ファイルの中身を1行ずつ読み込みながら処理する

#!/bin/bash # 読み込むファイルを指定 filename="example.txt" # ファイルの中身を1行ずつ読み込んで処理 while IFS= read -r line; do # 各行に対する処理をここで行う echo "Processing: $line" done < "$filename"

IFS= を空文字に設定して、「区切り文字を完全に無効化」する。Bashのreadコマンドは標準的に改行を「行単位の区切り」として扱うので、IFS を空文字にしても、改行で行ごとに区切られる。

コード内で IFS= と設定すると、IFS の値を一時的に空文字に変更します。この設定は、そのスコープ内でのみ適用され、他の部分には影響しません。たとえば、IFS= read -r line の行でのみ有効です。その後、IFS の値は元に戻ります。

なので、グローバルに IFS が変更されることはありませんが、特定のコマンド実行時に一時的に影響を与える仕組みになっています。