archivo remoto scp a la máquina local

archivo remoto scp a la máquina local

Como parte del script, estoy intentando copiar un archivo desde un sitio remoto. Pero recibí un error. Para mí eso suena un poco extraño porque todo suena bien:

#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 con los corchetes...

Respuesta1

Debes escapar de cada espacio y paréntesis:

#!/bin/bash

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

Por cierto, una alternativa más sencilla sería incluir $aaacomillas simples además de comillas dobles:

#!/bin/bash

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

Respuesta2

A continuación funcionó para mí. Creo que sólo necesitas escapar de los espacios, corchetes o cualquier otra cosa y deberías estar bien.

#!/bin/bash

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

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

Respuesta3

Creé un archivo en mi host remoto con el nombre literal `"/tmp/algún archivo con espacios (y corchetes).txt~.

Si pones comillas dobles+simples en el nombre, así pude transferirlo. Inspirado por estopregunta.

/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

con una variable

/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

información relacionada