scp arquivo remoto para a máquina local [duplicado]

2

como parte do script estou tentando copiar um arquivo do site remoto. Mas tenho um erro. Para mim, isso soa um pouco estranho, já que 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 ...

    
por swap 15.05.2015 / 20:27

3 respostas

3

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/

A propósito, uma alternativa mais amigável seria incluir $aaa com aspas simples, além das aspas duplas:

#!/bin/bash

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

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

#!/bin/bash

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

scp -r [email protected]:"$aaa" .
    
por 15.05.2015 / 20:40
0

Eu criei um arquivo no meu host remoto com o nome literal '"/ tmp / algum arquivo com espaços (e colchetes) .txt ~.

Se você duplicar + aspas simples, o nome será transferido. Inspirado por este question .

/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
    
por 15.05.2015 / 20:58

Tags