Tengo un script que scp es un archivo del host remoto al 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 dieron como resultado la ruta scp correcta.
Código:
PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH [email protected]:/Users/Me/Desktop
Resultados en
Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg
Incluyendo PATH entre comillas "$PATH"
da el mismo error.
Cambiar los espacios por espacios escapados tampoco funciona, aunque por lo que sé, 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
Respuesta aceptada:
Debe citar tanto la declaración como el uso
path="/var/root/Documents/MyFile OG-v1.2.3.pkg"
scp "$path" [email protected]:/Users/Me/Desktop
Si no cita el primero, $path
contendrá sólo la primera parte. Si no cita el segundo, 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).