On Thursday 14 February 2008 23:13, David C. Rankin wrote:
...
Stumbling around, it seems if you include AFS='\n' it will keep the loop from breaking on spaces by specifying that it only break on newlines and not spaces. So filenames with spaces (all my wife's digital pictures are) this is the only thing I have found to work without extensive character and replacing spaces with '_':
It's "IFS" not "AFS" and you need the "in" keyword as David Bolt mentioned:
And if the script is more than just a quick one-liner, you should really be saving and restoring the old IFS, or you can end up with some rather difficult to diagnose failures. You can find an example of this is in /etc/init.d/alsasound === start snippet === load_sequencer() { test "$LOAD_SEQUENCER" = "yes" && modprobe -q snd-seq if [ x"$LOAD_SEQUENCER" = xyes -a -r /proc/asound/seq/drivers ]; then OLDIFS="$IFS" IFS="," while read t x c; do /sbin/modprobe $t done < /proc/asound/seq/drivers IFS="$OLDIFS" fi } === end snippet === One interesting aside here is the use of the test: [ x$c = x ] a little later in that script. Why on earth they didn't use this instead is an interesting puzzle: [ -z "$c" ] Regards, David Bolt </quote> That is a workaround for older version of bash and uninitialized variables, I've had to use it many times. -- Best regards, Nick Zeljkovic -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org