From: Lao Ming on 13 Nov 2009 21:26
On Nov 13, 1:23 am, pk <p...(a)pk.invalid> wrote:
> Lao Ming wrote:
> > I had the bright idea of setting IFS="\n" in my while loops as in:
> > while IFS="\n" read -r FILE
> > I thought that this worked great for processing directory names or
> > filenames with spaces in the name. I didn't test it enough but it
> > seemed to work for several months. Worst of all, I didn't detect this
> > issue until now.
> > Now I've just discovered that all folder names that end with the
> > letter 'n' are not getting processed because, for example,
> > "Compression" becomes "Compressio" and thus, later, not found.
> > Looking at the log file, it's definitely the IFS snipping that last
> > letter off.
> > So, do I abandon the use of this or am I just using IFS incorrectly or
> > in a manner that wasn't intended?
> You are using either "\" or "n" as IFS. To use a literal newline, you need
> or, with shells that support that, IFS=$'\n'
I changed all the while loops to use the literal newline and the
problem went away. It's weird that I never saw it before though
because I started using the IFS="\n" several months ago. When I just
added a bin directory to the distribution, that's when it reared its
proverbial ugly head, I guess. Thanks a bunch to everybody.
First | Prev |
Pages: 1 2
Prev: Is it possible to automatically download new software when it's released?
Next: tee with pipe