I've got a script that scp's a file from remote host back to local. Sometimes the file names contain spaces. scp does not like spaces in its file names. For some reason my attempts at handling the spaces have not resulted in the correct scp path.
Code:
PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH Me@10.1.10.33:/Users/Me/Desktop
Results in
Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg
Enclosing PATH in quotes "$PATH"
gives the same error.
Swapping the spaces for escaped spaces also is not working, although as far as I can tell it should:
ESC_PATH=${PATH/' '/'\ '}
although printing the escaped path shows that the edit worked:
echo $ESC_PATH
> /var/root/Documents/MyFile\ OG-v1.2.3.pkg
Best Answer
You should quote both the declaration and the usage
If you do not quote the first,
$path
will contain just the first part. If you do not quote the second,scp
will treat each space-separated part as an argument.(I've changed
$PATH
to$path
because$PATH
is an important reserved variable and you must not use it for general purposes.)