Hola El 16/Jan/06 - 18:09, Iñaki dijo: > El Lunes, 16 de Enero de 2006 17:22, Iñaki escribió: > > Tengo un directorio con un espacio en blanco: "Lista Debian". > > > > Me gustaría saber cómo le puedo pasar ese directorio como parámetro a un > > script de Bash para que opere con él. El problema de hecho es hacer que un > > comando reconozca los espacios en blanco dentro de una variable. > > > > El script es este (es sólo para solucionar este problema): > > > > --------------------------------------------- > > #!/bin/bash > > > > #### Así sale mal: > > directorio="Lista\ Debian" > > echo "Con la variable $directorio:" > > ls $directorio > > > > #### Así sale bien: > > echo > > echo "Directamente:" > > ls Lista\ Debian > > ---------------------------------------------- > > > > La salida de ese script es ésta: > > > > ---------------------------------------------- > > #> ./script > > > > Con la variable Lista\ Debian: > > ls: Lista\: No existe el fichero o el directorio > > ls: Debian: No existe el fichero o el directorio > > > > Directamente: > > file1 file2 file3 > > ---------------------------------------------- > > > > > > He probado también poniendo: > > directorio="Lista\\ Debian" > > y ocurre lo mismo. > > > > > > El error está localizado: si una variable tiene \ para indicar un espacio > > en un nombre de archivo entonces un comando que la emplee no lo hace > > correctamente. ¿¿¿POR QUE??? > > > > > > Gracias por cualquier respuesta. > > > > Hola, se me ha ocurrido una forma más fácil de que se vea el problema. > Olvidaros del script: > > - Creamos un directorio con un espacio en medio: > mkdir Lista\ Debian > > - Creamos archivos dentro: > touch Lista\ Debian/file1 > touch Lista\ Debian/file2 > > - Ejecutamos esto y vemos que funciona: > ls Lista\ Debian > file1 file2 (funciona) > > - Lo probamos con variable "directorio": > directorio="Lista Debian" > ls $directorio > ls: Lista: No existe el fichero o el directorio > ls: Debian: No existe el fichero o el directorio > > - Probamos con otras combinaciones: > directorio=Lista Debian > directorio=Lista\ Debian > directorio=Lista\\ Debian > directorio='Lista Debian' > directorio='Lista\ Debian' > > Pero con ninguna funciona. ¿Alguna idea? Prueba ls "$directorio" Para estas cosas, puede que te venga bien activar el modo de depuración de bash ejecutando set -x (set +x para desactivarlo). Así ves cómo te está sustituyendo las comillas y qué es lo que te está haciendo exactamente. De todas maneras, a mi esto de las comillas y lo espacios me ha traido por el camino de la amargura mas de una vez. Alguna de ellas he tenido que pasar argumentos con espacios de un script a otro he tenido que claudicar y buscar otra forma de hacerlo :-S > > PD: He probado todas las imaginables, si a alguien se le ocurre alguna forma > le pido por favor que antes lo compruebe siguiendo los pasos anteriores. > > > Gracias a todos y un saludo. > > > > -- > y hasta aquí puedo leer... > -- ___________________________________________________________________ Iván Forcada Atienza: correo: ivan@forcada.info ------------------------------------------------------------------- "Software is like sex: it's better when it's free" (Linus Torvalds)
Attachment:
pgpcz4LkXr5HE.pgp
Description: PGP signature