arquivo remoto scp para máquina local

arquivo remoto scp para máquina local

como parte do script, estou tentando copiar um arquivo de um site remoto. Mas ocorreu um erro. Para mim, isso parece um pouco estranho, pois tudo parece bem:

#aaa="/path/to/some file with spaces(and brackets).txt"
....
#scp [email protected]:"$aaa" /test/
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `scp -f /path/to/some file with spaces.txt'

upd: problema com colchetes ...

Responder1

Você precisa escapar de cada espaço e colchetes:

#!/bin/bash

aaa='/path/to/some\ file\ with\ spaces\(and brackets\).txt'
scp [email protected]:"$aaa" /test/

Aliás, uma alternativa mais amigável seria colocar $aaaentre aspas simples além de aspas duplas:

#!/bin/bash

aaa='/path/to/some file with spaces(and brackets).txt'
scp [email protected]:"'$aaa'" /test/

Responder2

Abaixo funcionou para mim. Eu acho que você só precisa escapar dos espaços, colchetes ou qualquer outra coisa e você deve estar bem.

#!/bin/bash

aaa="/tmp/untitled\ text\ 2.txt"

scp -r [email protected]:"$aaa" .

Responder3

Criei um arquivo em meu host remoto com o nome literal `"/tmp/algum arquivo com espaços (e colchetes).txt~.

Se você colocar aspas duplas + simples no nome, assim eu consegui transferi-lo. Inspirado por issopergunta.

/tmp$ scp remotehost:"'/tmp/some file with spaces(and brackets).txt'" .
some file with spaces(and brackets).txt          100%    0     0.0KB/s   00:00

Com uma variável

/tmp$ aaa="/tmp/some file with spaces(and brackets).txt"
/tmp$ scp puppet:"'$aaa'" .
some file with spaces(and brackets).txt               100%    0     0.0KB/s   00:00

informação relacionada