[ILUG] Re: script handling filenames with spaces

Brian Foster blf at utvinternet.ie
Sun Aug 19 00:39:01 IST 2007


  | From: Marcus Furlong <furlongm at hotmail.com>
  | Date: Sat, 18 Aug 2007 22:05:07 +0100
  |[ ... ]
  | Maybe try setting IFS to be just <newline> instead of <space>,
  | <tab> and <newline>?  Add this to the start of your script.
  | 
  | IFS="
  | "
  | 
  | That should handle the spaces anyway, not sure how to best go
  | about odd characters.

 since the OP is (probably) using the GNU bash(1)
 shell, a (possibly) easier to understand version
 of the above would be to use the (rare) $'...'
 syntax, which supports C-style escapes.  e.g.,
 to set IFS to be just a newline:

    IFS=$'\n'

 without testing, it looks like with one additional
 fix the OP's script would handle any odd character
 (except, with this suggestion (or the tempfile or
 the pipe-equivalent), newline).  the OP's line:

    mb2md -s "$j" -d "$MAILDIR$i/.$(basename $j)"

 should be:

    mb2md -s "$j" -d "$MAILDIR$i/.$(basename "$j")"

 (note the added double-quotes around the argument
 to basename(1)).  or, as I noted earlier (which
 also contains a suggestion on handling newline),
 that line could be rewritten as:

    mb2md -s "$j" -d "$MAILDIR$i/.${j##*/}"

cheers!
	-blf-
-- 
▶ ▶  I AM CURRENTLY LOOKING FOR A JOB!  ◀ ◀ | Brian Foster
Experienced (>25 yrs) software engineer:    |        Montpellier, FRANCE
 • Unix, Linux, embedded, design-for-test;  | Stop E$$o (ExxonMobile)!
 • Software/hardware co-design, debugging;  |     http:/www.stopesso.com
 • Kernels, drivers, filesystems, &tc;    Résumé (CV) & contact details:
 • IDL, automated testing, process, &tc.   http://www.blf.utvinternet.ie



More information about the ILUG mailing list