インフラ系SEの技術メモ

雑なエンジニアが低信頼性のメモを書いています。参考程度にとどめてください。

(Linux)シェルスクリプトでファイル指定でwhile readするも一行で終わってしまう

謎事象

INPUT_FILE_NAME=./test.csv
while read LINE
do
...
done < ${INPUT_FILE_NAME}

こんな感じで記載をすると、指定したファイルを一行ずつ末尾までループしてくれますが、なぜか一行で終了する事象に遭遇。

デバッグとして確認してもread LINEで終わっている。

$ bash -x ./test.sh                                                                                          
+ INPUT_FILE_NAME=./test.csv
+ read LINE
...
+ read LINE

結局、今回利用していない以下のような処理が入っていてその行を削除するとうまくいきました。

Check=`cat $HOGE_FILE_NAME`

上で指定している変数自体を宣言していないので、デバッグの中でも登場しない処理。こいつが悪さをしていた模様ですが、細かいことは分からず。再現性はあるみたいなので原因がわかった方はぜひコメントで教えてください...