Tengo un script que scp es un archivo de host remoto a local. A veces los nombres de los archivos contienen espacios. A scp no le gustan los espacios en sus nombres de archivo. Por alguna razón, mis intentos de manejar los espacios no han resultado en la ruta scp correcta.
Código:
PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH Me@10.1.10.33:/Users/Me/Desktop
Resultados en
Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg
El encerrar la RUTA entre comillas "$PATH"
da el mismo error.
Cambiar los espacios por espacios escapados tampoco funciona, aunque, por lo que puedo decir, debería:
ESC_PATH=${PATH/' '/'\ '}
aunque imprimir la ruta de escape muestra que la edición funcionó:
echo $ESC_PATH
> /var/root/Documents/MyFile\ OG-v1.2.3.pkg
$PATH
para sus propias variables, porque su terminal lo necesita.Respuestas:
Debe citar tanto la declaración como el uso.
Si no cita la primera,
$path
contendrá solo la primera parte. Si no cita la segunda,scp
tratará cada parte separada por espacios como un argumento.(He cambiado
$PATH
a$path
porque$PATH
es una variable reservada importante y no debe usarla para fines generales).fuente
Estaba intentando algo muy similar con ssh y pasando una línea de comando a través de él. p.ej
Descubrí que simplemente definir "$ PATH" no funcionaba, todavía arrojaba errores. Sin embargo si corriera
Esto funcionó. El truco consiste en garantizar que se pase un conjunto adicional de "" al comando ssh desde el shell.
fuente