whileループで「done <ファイル」はどのように機能しますか?

whileループで「done <ファイル」はどのように機能しますか?

Bashでファイルの内容を操作する方法を学び、次のコード例を見つけました。

while IFS=, read -r col1 col2
do
    echo "I got:$col1|$col2"
done < myfile.csv

~によるとOpen Group 基本仕様 6号:

読み取りユーティリティは標準入力から1行を読み取る必要があります。

read私の理解が正しい場合、これは、たとえば、行を読むには、コマンドの最後に次を追加するmyfile.csv必要があることを意味します。< myfile.csvread

read -r col1 col2 < myfiles.csv

ただし、添付のコードではキーワードの後に< myfile.csv​​追加されます。doneなぜそんなことですか?

ベストアンサー1

この例では、リダイレクトの目的のために、whileループ(条件付き)のすべてのエントリの標準入力は次のとおりです。myfile.csv

提案どおりにリダイレクトできますが、読み取る呼び出しごとにリダイレクトが個別に設定され、毎回最初の行だけが読み取られます。

おすすめ記事