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