while read文を使って次のようにするとテキストファイルを1行ずつ読み込んでなんやかんやすることができます。(Solarisではこの書き方はできないようですが、あまり使われていないOSですので考慮しなくても良いと思います。)
#!/bin/bash
FILE_NAME=/fuga/hoge/fizz.txt
while read LINE
do
# コマンド
done < ${FILE_NAME}
while文に${FILE_NAME}をリダイレクトするとreadコマンドで${FILE_NAME}の中身を1行ずつ読み込んでLINEという変数に格納します。(変数名はLINEでなくても問題ありません。)
このようなコードを使うと「3カラム目の値がfizzである行を判別してうんたらかんたらする」みたいなことができます。
注意点と回避策
while文の末尾でリダイレクトする都合上「どのファイルを読み込んでいるのか」ということが上からシェルスクリプトを読んでいくと分かりづらいので、while文の上にコメントで「このファイルを読み込みます」ということを書き添えておくと良いと思います。
FILE=/hoge/fuga.txt
# FILEを読み込んで処理
while read LINE
# コマンド
done < "${FILE}"
for文ではファイルを1行ずつ読み込めない
私は当初for文で上記の処理を実現しようとして次のようなコードを書いていました。
FILE=/hoge/fuga.txt
# これは動かない
for LINE in "${FILE}"
do
# コマンド
done
結果から言うとこのコードは動きませんでした。
ディレクトリを読み込んでファイルを1つずつ処理することができたので、その延長線上で考えてファイルを1行ずつ処理することもできるやろ、程度に考えてしまいました。
# ディレクトリ内にあるファイルを1つずつ読み込む
# これは動く
for FILE in /usr/local/hoge/*
do
echo $FILE
done
ファイルを1行ずつ読み込む場合は **「while read line」**と覚えると良いでしょう。