Shell for/foreach pass incorrect varibles to next line (using awk/sed/sort//find)

From: LOEWENTHAL Simon (sloewenthal@gemini.edu)
Date: Mon Feb 20 2006 - 13:18:31 EST


Dear all,

Although not strictly an emergency and probably not Sun specific I would
appreciate it if you could indulge for a few mins as I've been racking
my brains on this one for most of last week, and I had also meant to
have had this done by last week. (I want to use it to move IMAP mail
folders between servers.)

Sun's shells won't pass file names from my script with spaces. With
files that have a space in them, when passed as input to the next
command, then the command is unable to parse them correctly. This
results in the directory Night\ Logs interpreted as two separate file
names. As you can see I have tried to replace the space character with
a delimited one (with sed), but this failed as well.

I also tested this with Rsync instead of Find, and have had the same
result. I changed to Tcsh and got the same problem.

#!/bin/bash
for mbox in "`awk -F"/" '{printf("%s\n"),$1}' .mailboxlist |sed -e 's/\
/\\\ /' |sort -u`"
do
echo $mbox
find /export/home1/fbloggs/$mbox |cpio -pdm /export/mailfolders/$u
done

Example input for $mbox:
Hire Logs
Products
Sent Items

This produces:

Hire\ Logs
find: cannot open Hire\: No such file or directory
find: cannot open Logs: No such file or directory
Products
Sent\ Items
find: cannot open Sent\: No such file or directory
find: cannot open Items: No such file or directory

The Products directory is handled correctly.

Any ideas?
Regards, S

-- Nothing fancy and nothing Microsoft
_______________________________________________
sunmanagers mailing list
sunmanagers@sunmanagers.org
http://www.sunmanagers.org/mailman/listinfo/sunmanagers



This archive was generated by hypermail 2.1.7 : Wed Apr 09 2008 - 23:39:01 EDT