![arquivo remoto scp para máquina local](https://rvso.com/image/658344/arquivo%20remoto%20scp%20para%20m%C3%A1quina%20local%20.png)
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 $aaa
entre 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