At 05:19 AM 8/23/2008, David Banning wrote:
I am running into a problem with the space character in filenames.
For instance, If I want to run the script;

for x in `ls`
do
  echo $x
done

then filenames that have a space in them ie: "john smith.jpg"
are processed by my script as two names, "john" and "smith.jpg".

What is the best way to deal with this type of space problem in the shell?

I know that file names in quotes solves some problems but I can't tranfer
that to my script.

Depending on what your script is doing, I would use an intermediate file and awk.

Something like:
ls >/tmp/mytempfile
cat /tmp/mytempfile | awk '{ print $0 }'

if you are looking for something special add grep to the mix:
cat /tmp/mytempfile | awk '{ print $0 }'|grep -i [some name pattern]
rm /tmp/mytempfile

You can save the results to another temporary file for more processing, or use awk more to create commandlines to execute in another script file such as: cat /tmp/mytempfile | awk '{ print $0 }'|grep -i [some name pattern] | awk '{printf"cp %s /backup/backupdir\n", $0)}' >/tmp/mycopyscript

chmod +x /tmp/mycopyscript
/tmp/mycopyscript

So depending on what your original script was doing, this method may work for you.

        -Derek

--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to