次のように、全てのファイルに対してなにかの処理を行いたいとします:
for i in `find . -type f` do ls ${i} done
この場合、hello world.txt
といったようにファイル名に空白が入っているとうまく動きません。
デフォルトのIFS(区切り文字)が空白を含むため、
ls hello ls world.txt
といった具合に解釈されてしまうためです。
対策ですが、
SAVEIFS=$IFS IFS=$(echo -en "\n\b") for i in `find . -type f` do ls ${i} done IFS=$SAVEIFS
のようにIFSを一旦、空白を含まないものに差し替えるとうまくいきます。