[opensuse-es] Problema con espacio en blanco en un script
Hola. Tengo el siguiente script: # export a="dira dirb dirc dir d";for i in $a; do echo $i; done con la siguiente salida: dira dirb dirc dir d El problema que tengo es que la salida tendria que ser: dira dirb dirc dir d He probado combinaciones del tipo 'dir d', dir\ d', """dir d """, pero ninguna ha funcionado. ¿Como tengo que definir la variable "a" para obtener la salida que deseo? Gracias. -- Joan Carles Jimenez jjcarles@terra.es --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2007-05-14 a las 16:57 +0200, Joan Carles Jimenez escribió:
# export a="dira dirb dirc dir d";for i in $a; do echo $i; done
con la siguiente salida:
dira dirb dirc dir d
El problema que tengo es que la salida tendria que ser: dira dirb dirc dir d
He probado combinaciones del tipo 'dir d', dir\ d', """dir d """, pero ninguna ha funcionado. ¿Como tengo que definir la variable "a" para obtener la salida que deseo?
No puedes, porque el separador de "tokens" es también el espacio. Tienes que separarlos con otra cosa, y cambiar la variable "IFS" al entrar y al salir del bucle. - -- Saludos Carlos E.R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFGSJ1htTMYHG2NR9URAiGhAJ0TJP3wNws09bH6DfDtYbpAhQG+pQCfaj3M tXUUBNl6zRyv24yw/Tv8iNM= =vTxz -----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Joan Carles Jimenez escribió:
Hola.
Tengo el siguiente script:
# export a="dira dirb dirc dir d";for i in $a; do echo $i; done
con la siguiente salida:
dira dirb dirc dir d
El problema que tengo es que la salida tendria que ser: dira dirb dirc dir d
He probado combinaciones del tipo 'dir d', dir\ d', """dir d """, pero ninguna ha funcionado. �Como tengo que definir la variable "a" para obtener la salida que deseo?
Gracias.
Hola: Vamos a ver,prueba esto: 1-Crea una lista con los directorios que quieras leer,y la llamas,por ejemplo,dat.log En tu caso dat.log tendría: dira dirb dirc dir d Luego creas el script que sería algo asi: for n in $(seq $(grep -c $ dat.log)) do directorio="$(sed -n ${n}p dat.log)" echo $directorio done exit Espero te sirva - -- Chema Ollés Usuario Linux: #198057 openSUSE 10.3 (i586) Alpha4 kernel-2.6.21-rc7-3-default #1 SMP Wed Apr 18 11:43:05 UTC 2007 i686 GNU/Linux -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.4-svn0 (GNU/Linux) iD8DBQFGSK4r65SpD7GhbzoRAggSAKCd5z+hmqewZb/JwFlJc0KcJd1KVgCfbeFQ BDwVe5iPU91hOiVQfrQw9GA= =f9bS -----END PGP SIGNATURE----- --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2007-05-14 a las 20:44 +0200, Chema Ollés escribió:
Vamos a ver,prueba esto: 1-Crea una lista con los directorios que quieras leer,y la llamas,por ejemplo,dat.log En tu caso dat.log tendría: dira dirb dirc dir d
Luego creas el script que sería algo asi:
for n in $(seq $(grep -c $ dat.log)) do directorio="$(sed -n ${n}p dat.log)" echo $directorio done exit
Para hacerlo mediante fichero, más fácil así: while read LINEA ; do echo $LINEA done < dat.log Tres líneas y sin seq ni grep ni na. - -- Saludos Carlos E.R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFGSMAOtTMYHG2NR9URAjmvAJ4zgSLowlX9I6TIGGteIMzgq3i0JwCdEmno DP7DdH1vUdJB9ZyIFq7P+0c= =O9zg -----END PGP SIGNATURE-----
participants (3)
-
Carlos E. R.
-
Chema Ollés
-
Joan Carles Jimenez