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.