Buenas a todos , mi problema es el siguiente , estoy haciendo un script y necesito en una variable tener una direccion a un archivo , y ahi esta el problema yo tengo esto
a="/home/usario/mis\ canciones" --->la barra invertida es para que me tome el espacio que hay en el nombre
ahora si yo hago por ejemplo $(cd $a) me tira un error de que no encuentra el fichero , pero si escribo
cd /home/usario/mis\ canciones me anda . Y es exactamente el mismo contenido de $a, alguna idea de como solucionarlo sin tener que quitar el espacio de la carpeta?
Desde ya muchas gracias
La asignación del directorio
La asignación del directorio a la variable debe ir sin comillas.
No entiendo para qué haces $(cd $a), eso asigna a una variable temporal la salida del comando cd $a.
Solución:
a=/home/usario/mis\ canciones
cd "$a"
Saludos.
http://www.injiniero.es
Resumen
... pues eso, ponle comillas (al llamarlas) a las varibles con espacios, aunque las definas con '\' incluidos.
Investiga sobre los
Investiga sobre los caracteres de escape de bash.
En bash puedes escapar a los espacios en blancos con comillas simples (' ') o dobles comillas (" "). En realidad con comillas simples escapas a todos los caracteres especiales.
Tu ejemplo:
var='ruta con espacios'
cd "$var"
Las dobles comillas para $var en cd son necesarios para que bash interprete que se le está pasando sólo un argumento a cd.
Para ver que contiene una variable puedes imprimirla en pantalla con echo
var='hola mundo'
echo "$var"
echo '$var'
Veras que la salida de cada echo será diferente.
Si sabes inglés puedes leer esta info: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_03.html
Saludos.
void hey(int x,int y)
{
if (x && y)
printf("http://libertadhack.blogspot.com/");
else
printf("http://libertadpunk.blogspot.com/");
}