GNU/Linux >> Tutoriales Linux >  >> Linux

¿Problemas en el script con espacios en el nombre de archivo?

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).


Linux
  1. Grabe su terminal con script y scriptreplay

  2. Ejecutar secuencia de comandos con ". ¿Y con “fuente”?

  3. ¿Pasar el nombre de archivo con espacios a un script de Shell?

  4. ¿La secuencia de comandos finaliza abruptamente con un mensaje terminado?

  5. ¿Espacios para variables en Bash Script?

Automatice el procesamiento de imágenes con este script Bash

Cómo escribir un script Bash con ejemplos

¿Cómo escapo espacios en rutas para Scp en Linux?

Cómo quitar espacios de los nombres de archivo en Linux

scp desde Linux remoto a Windows local con espacios en la ruta local

¿Plantillas con Linux en un script de Shell?