GNU/Linux >> Tutoriales Linux >  >> Linux

¿Espacios para variables en Bash Script?

Tengo un espacio en uno de los nombres de directorio. Quiero enumerar un archivo debajo de él desde un script bash. Aquí está mi guión:

fpath="${HOME}/"New Folder"/foobar.txt"

echo "fpath=(${fpath})"
#fpath="${HOME}/${fname}"

ls "${fpath}"

El resultado de este script es:

fpath=(/Users/<username>/"New Folder"/foobar.txt)
ls: /Users/<username>/"New Folder"/foobar.txt: No such file or directory

Pero cuando aparece el archivo en mi shell, existe:

$ ls /Users/<username>/"New Folder"/foobar.txt
/Users/<username>/New Folder/foobar.txt

¿Hay alguna manera de obtener ls? para mostrar la ruta de mi script?

Respuesta aceptada:

Simplemente elimine las comillas dobles internas:

fpath="${HOME}/New Folder/foobar.txt"

Dado que el contenido completo de la variable está entre comillas dobles, no necesita hacerlo una segunda vez. La razón por la que funciona desde la CLI es que Bash evalúa primero las comillas. Falla en la variable porque las comillas con barra invertida se tratan como una parte literal de la ruta del directorio.


Linux
  1. ¿Cómo depurar un script Bash?

  2. ¿Cómo agregar nuevas líneas en variables en Bash Script?

  3. ¿Usar la extensión .sh o .bash para scripts Bash?

  4. ¿Por qué no puedo escapar de los espacios en un script Bash?

  5. nombre base con espacios en un script bash?

Golpe para bucle

35 ejemplos de secuencias de comandos Bash

Cómo ejecutar un script Bash

Bash Script for Loop explicado con ejemplos

Ejecute el comando bash en la canalización de jenkins

Cómo hacer grep para Unicode en un script bash