Problema con script de bash

Imagen de lgt
lgt
0 puntos

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

Imagen de slap
+1
0
-1

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"

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de KIKERAP
+1
0
-1

... pues eso, ponle comillas (al llamarlas) a las varibles con espacios, aunque las definas con '\' incluidos.

+1
0
-1
Imagen de razaAztk
+1
0
-1

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.

+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}