Hi,
Say I have this text file <copy.out> that contains a list of files/directories to be copied out to a different location.
$ more copy.out
dir1/file1
dir1/file2
dir1/file3
"dir1/white space"
dir1/file4
If I do the following:
$copy=`more copy.out`
$echo $copy
dir1/file1 dir1/file2 dir1/file3 "dir1/white space" dir1/file4
$cp -v $copy ./temp
dir1/file4 -> ./temp/file4
cp: space": No such file or directory
cp: "dir1/white: No such file or directory
dir1/file3 -> ./temp/file3
dir1/file2 -> ./temp/file2
dir1/file1 -> ./temp/file1
All of the files managed to be copied except for the file with a whitespace.
I have tried using for loop, but the same thing happened.
$ copy=`while read line; do echo "$line"; done < copy.out`
$ echo $copy
dir1/file1 dir1/file2 dir1/file3 "dir1/white space" dir1/file4
$ cp -v $copy ./temp
dir1/file4 -> ./temp/file4
cp: space": No such file or directory
cp: "dir1/white: No such file or directory
dir1/file3 -> ./temp/file3
dir1/file2 -> ./temp/file2
dir1/file1 -> ./temp/file1
I edited copy.out and replace "dir1/white space" with dir1/white\ space but it didn't work. Just by simply removing the double quotes failed to work either. I understand that by using echo, it will flatten any whitespace in $variable into a single space, so I've tried using double quotes $variable, but again, it failed to copy the file with a whitespace.
I don't like whitespace in files/dirs name, but some people seem to like it, so I'd like to know how to fix this problem.
Any advice offered is appreciated.
Thanks.