[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

OT: Need help from bash experts...



Sorry for OT posting; I am not sure if there is a newsgroups for bash 
experts, so I figured I'd try here.

I need to be able to write a bash script that can copy files from a directory 
who's name includes a space (long story, but it's a windows directory under 
Win98 on a machine on my network).

Anyway, supposing that the directory is "/mount/windows/spaced name" and I 
need to copy all of the files in the directory to a target.

At a bash prompt, I can issue either:
cp "/mount/windows/spaced name/*" target 
OR
cp /mount/windows/spaced\ name/* target
and all works fine.

However, from within a bash script, something like:

#!/bin/sh
sourcedir=/mount/windows/spaced\ name
cp $sourcedir/* target

fails, because the space isn't properly passed to cp, AND further the shell 
doesn't do expansion on the wild card in the file name.

I have tried all sorts of variants:
sourcedir="/mount/windows/spaced\ name"
sourcedir="/mount/windows/spaced\\ name"
sourcedir=/mount/windows/spaced\\ name"

and the cp command with various quotes and not quotes, and cannot seem to get 
this to work. Within the script, if I try:

sourcedir="mount/windows/spaced\ name"
anotherdir="mount/windows"
echo $sourcedir/*
echo $anotherdir/*

the first echo shows that there is no expansion of the wild card, while the 
second echo works as expected, echoing the name of every file in 
/mount/windows.

Clearly the problem is that dreadful space in the directory name. Any help on 
how to syntax this greatly appreciated.

Thanks.
N



Reply to: