Eu tenho um script que scp é um arquivo do host remoto de volta ao local. Às vezes, os nomes dos arquivos contêm espaços. O scp não gosta de espaços em seus nomes de arquivo. Por alguma razão, minhas tentativas de manipular os espaços não resultaram no caminho scp correto.
Código:
PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH Me@10.1.10.33:/Users/Me/Desktop
Resulta em
Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg
A inclusão de PATH entre aspas "$PATH"
gera o mesmo erro.
Trocar os espaços por espaços vazios também não está funcionando, embora tanto quanto eu possa dizer:
ESC_PATH=${PATH/' '/'\ '}
embora imprimir o caminho de escape mostre que a edição funcionou:
echo $ESC_PATH
> /var/root/Documents/MyFile\ OG-v1.2.3.pkg
$PATH
para suas próprias variáveis, porque seu terminal precisa dele.Respostas:
Você deve citar a declaração e o uso
Se você não citar a primeira,
$path
ela conterá apenas a primeira parte. Se você não citar o segundo,scp
tratará cada parte separada por espaço como um argumento.(Alterei
$PATH
para$path
porque$PATH
é uma variável reservada importante e você não deve usá-la para propósitos gerais.)fonte
Eu estava tentando algo muito semelhante ao ssh e passando uma linha de comando através dele. por exemplo
Descobri que simplesmente definir "$ PATH" não funcionava - ainda gerava erros. No entanto, se eu corresse
Isso funcionou. O truque é garantir que um conjunto "" adicional seja passado para o comando ssh a partir do shell.
fonte