Date: Tue, 13 Dec 2005 23:44:42 -0500 (EST) From: user <user@dhp.com> To: freebsd-questions@freebsd.org Subject: I need a better way to loop in the shell... Message-ID: <Pine.LNX.4.21.0512132340550.8684-100000@shell.dhp.com>
next in thread | raw e-mail | index | archive | help
I always do loops in /bin/sh like this: for f in `cat file` ; do rm -rf $f ; done Easy. I like doing it like this. The problem is, when I am dealing with an input list that has multiple words per line, this chops it up and treats every word as a new line... For instance, lets say I have a file full of filenames, like this: # cat file 10,000 Maniacs MTV Unplugged - 01 - These Are Days.mp3 10,000 Maniacs MTV Unplugged - 02 - Eat For Two.mp3 10,000 Maniacs MTV Unplugged - 03 - Candy Everybody Wants.mp3 and I try to use the above loop on it, it thinks that every word is a line ... the above loop will attempt to delete the following files: 10,000 Maniacs MTV Unplugged - 01 - These (and so on) Even if I quote the variable $f, like: for f in `cat file` ; do rm -rf "$f" ; done it still does the same thing. ----- So my question is, what is a nice simple way to loop in the shell, as close to what I am doing above as possible, that does not have this problem ? Should I just be using something other than `cat` ? Or what ? THanks.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.LNX.4.21.0512132340550.8684-100000>