"IFS=;"代わりに「IFS = Read」が頻繁に使用されるのはなぜですか?

一般的な慣行は、各繰り返しごとに繰り返し設定しないようにIFS設定をwhileループの外に置くようです...これは単なる慣例的な「猿が見て、猿がする」スタイルですか?読む男性は読むそれとも、ここで微妙な(または露骨に明らかな)問題を見逃しているのでしょうか?

ベストアンサー1

IFS=; while read..

IFSループの外側にフルシェル環境を設定しますが、

while IFS= read

ただ再定義してください。read移動する(Bourneシェルでは除く)次のループを実行していることを確認できます。

while IFS= read xxx; ... done

その後、このようなループの後にecho "blabalbla $IFS ooooooo"印刷してください。

blabalbla
 ooooooo

そしてその後

IFS=; read xxx; ... done

これIFS 滞在する上書き:今echo "blabalbla $IFS ooooooo"印刷してください

blabalbla  ooooooo

したがって、2番目の形式を使用している場合はリセットすることを忘れないでくださいIFS=$' \t\n'


この質問の2番目の部分ここにマージだから、ここから関連する回答を削除しました。

おすすめ記事