社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

テキストファイルを1行ずつ処理するには

input.txt がよみこむテキストファイルの場合

こんな感じです。

while IFS='' read -r line && [[ -n "$line" ]]; do echo $line; done < input.txt
なぜ、IFS='' するのですか?

IFSってのはbash環境変数で、デフォルトでは$' ¥t¥n'(スペース・タブ・改行)が入っています。
そのままだと、半角スペースとタブがかってに消されてしまうため、空文字を設定しています。

read -r のオプションは何のためですか?

バック・スラッシュをエスケープ文字とみなさないで、そのまま取得するため。