Thread View: es.comp.os.linux.programacion
8 messages
8 total messages
Started by Marcpp
Mon, 18 Sep 2006 16:20
Shell script; mostrar una variable con \ incluidos
Author: Marcpp
Date: Mon, 18 Sep 2006 16:20
Date: Mon, 18 Sep 2006 16:20
9 lines
1463 bytes
1463 bytes
Buenas, estoy desarrollando un script y me encuentro con que necesito pasar un fichero con espacios y ; de este tipo: CopiaLlums 2006-09-09 14;10;08.zip Lo transformo a CopiaLlums\ 2006-09-09\ 14\;10\;08.zip Pero al hacer un echo $variable que contiene el nombre de archivo, me lo muestra sin las \ que he puesto. Sabeis de alguna forma de hacerlo? Saludos.
Re: Shell script; mostrar una variable con \ incluidos
Author: Luis Angel Fdez. Fdez.
Date: Mon, 18 Sep 2006 16:41
Date: Mon, 18 Sep 2006 16:41
23 lines
1925 bytes
1925 bytes
Marcpp <marcpp@gmail.com> escribi�: > Buenas, Hola > estoy desarrollando un script y me encuentro con que necesito > pasar un fichero con espacios y ; de este tipo: CopiaLlums 2006-09-09 > 14;10;08.zip > Lo transformo a CopiaLlums\ 2006-09-09\ 14\;10\;08.zip > Pero al hacer un echo $variable que contiene el nombre de archivo, me > lo muestra sin las \ que he puesto. > Sabeis de alguna forma de hacerlo? Pues as� a bote pronto, cambiando cada '\' por '\\' al transformarlo. Ta llueu. -- Ubuntu 6.06 (dapper) (kernel 2.6.15-26-amd64-generic x86_64) AMD Athlon(tm) 64 Processor 3200+ (2200.149 MHz) up 3 days, 10:23 HT: C.D. Arrancatapinos (488047) VI.759 # http://muxin.no-ip.org/ SK: C.D. Arrancatapinos (18088) IV.57 # http://muxin.yi.org/
Re: Shell script; mostrar una variable con \ incluidos
Author: Marcpp
Date: Mon, 18 Sep 2006 20:10
Date: Mon, 18 Sep 2006 20:10
36 lines
2469 bytes
2469 bytes
Gracias por la respuesta, ya lo he probado pero no va por ahí. tengo una variable que contiene: $A --> CopiaLlums\ 2006-09-09\ 14\;10\;08.zip Luego tengo que modificar el contenido de la variable: $B=´echo $A | awk ...... Al hacer el echo es cuando pierde todas las contrabarras \ Saludos. Luis Angel Fdez. Fdez. ha escrito: > Marcpp <marcpp@gmail.com> escribió: > > Buenas, > > Hola > > > estoy desarrollando un script y me encuentro con que necesito > > pasar un fichero con espacios y ; de este tipo: CopiaLlums 2006-09-09 > > 14;10;08.zip > > Lo transformo a CopiaLlums\ 2006-09-09\ 14\;10\;08.zip > > Pero al hacer un echo $variable que contiene el nombre de archivo, me > > lo muestra sin las \ que he puesto. > > Sabeis de alguna forma de hacerlo? > > Pues así a bote pronto, cambiando cada '\' por '\\' al > transformarlo. > > Ta llueu. > > -- > Ubuntu 6.06 (dapper) (kernel 2.6.15-26-amd64-generic x86_64) > AMD Athlon(tm) 64 Processor 3200+ (2200.149 MHz) up 3 days, 10:23 > HT: C.D. Arrancatapinos (488047) VI.759 # http://muxin.no-ip.org/ > SK: C.D. Arrancatapinos (18088) IV.57 # http://muxin.yi.org/
Re: Shell script; mostrar una variable con \ incluidos
Author: Pere Pujal i Carabantes
Date: Mon, 18 Sep 2006 21:14
Date: Mon, 18 Sep 2006 21:14
48 lines
2146 bytes
2146 bytes
Hola Marcpp! El 18-09-2006 Marcpp va escriure en es.comp.os.linux.programacion: > Buenas, estoy desarrollando un script y me encuentro con que necesito > pasar un fichero con espacios y ; de este tipo: CopiaLlums 2006-09-09 > 14;10;08.zip > Lo transformo a CopiaLlums\ 2006-09-09\ 14\;10\;08.zip Como lo transformas? Algun motivo en especial para esta transformacion? > Pero al hacer un echo $variable que contiene el nombre de archivo, me > lo muestra sin las \ que he puesto. Puedes pegar algo de codigo? > Sabeis de alguna forma de hacerlo? A mi me funciona asin: pere@hola:~/Proves/prova$ touch "CopiaLlums 2006-09-09 14;10;08.zip" pere@hola:~/Proves/prova$ touch "CopiaLlums\ 2006-09-09\ 14\;10\;08.zip" pere@hola:~/Proves/prova$ ls CopiaLlums 2006-09-09 14;10;08.zip CopiaLlums\ 2006-09-09\ 14\;10\;08.zip pere@hola:~/Proves/prova$ for i in * > do > echo $i > done CopiaLlums 2006-09-09 14;10;08.zip CopiaLlums\ 2006-09-09\ 14\;10\;08.zip Como puedes ver echo se comporta correctamente con cualquiera de los dos ficheros. > Saludos. Salut Pere
Re: Shell script; mostrar una variable con \ incluidos
Author: Claudio
Date: Mon, 18 Sep 2006 22:28
Date: Mon, 18 Sep 2006 22:28
12 lines
1508 bytes
1508 bytes
On 2006-09-18, Marcpp <marcpp@gmail.com> wrote: > Gracias por la respuesta, ya lo he probado pero no va por ah�. > tengo una variable que contiene: $A --> CopiaLlums\ 2006-09-09\ > 14\;10\;08.zip > Luego tengo que modificar el contenido de la variable: > $B=�echo $A | awk ...... > Al hacer el echo es cuando pierde todas las contrabarras \ No, ah� no las pierde. Un saludo. --claudio--
Re: Shell script; mostrar una variable con \ incluidos
Author: Marcpp
Date: Tue, 19 Sep 2006 07:46
Date: Tue, 19 Sep 2006 07:46
99 lines
4189 bytes
4189 bytes
Bones
He estado probando varias cosas mas, pero sigue sin funcionar.
Una aclaración:
Tengo el fichero " CopiaLlums 2006-09-09 14;10;08.zip ", para acceder a
el, por
ejemplo hacer un... tar -r CopiaLlums\ 2006-09-09\ 14\;10\;08.zip
tengo que escribir todas las \.
Tengo un script que lee la fecha que figura en el nombre y crea un
directorio con dicha fecha, luego mueve el fichero/s con esa fecha
dentro de cada cual.
El nombre de los ficheros "sin con las \" lo guardo en un fichero $FT y
luego le pongo las \ $FT2... Ahí va un trozo de codigo:
...
FT=fitxtemp # Fichero con nombres de archivo sin \
FT2=fitxtemp2 # Fichero con nombres de archivo con \
FD=fitxdir # Fichero con nombres de directorio
A=`ls *.zip | wc -l`
..................
..................
while [ "$I" != 0 ]
do
D=`ls *.zip | cut -d " " -f 2 | head -$I | tail -1 |
uniq`
if [ ! -d $D ]
then
mkdir $D
fi
cat $FT2 | while read L
do
X=`echo $L | cut -d " " -f 2` # No
muestra las \
echo $X
if [ "$D" = "$X" ]
then
mv $L $D # No muestra
las #
fi
done
I=`expr $I - 1`
done
No se si importa pero estoy usando la distrubución Centos 4.3
Salutacions.
Pere Pujal i Carabantes wrote:
> Hola Marcpp!
>
> El 18-09-2006
> Marcpp va escriure en
> es.comp.os.linux.programacion:
>
> > Buenas, estoy desarrollando un script y me encuentro con que necesito
> > pasar un fichero con espacios y ; de este tipo: CopiaLlums 2006-09-09
> > 14;10;08.zip
> > Lo transformo a CopiaLlums\ 2006-09-09\ 14\;10\;08.zip
>
> Como lo transformas?
> Algun motivo en especial para esta transformacion?
>
>
> > Pero al hacer un echo $variable que contiene el nombre de archivo, me
> > lo muestra sin las \ que he puesto.
>
> Puedes pegar algo de codigo?
>
>
>
> > Sabeis de alguna forma de hacerlo?
>
> A mi me funciona asin:
>
> pere@hola:~/Proves/prova$ touch "CopiaLlums 2006-09-09 14;10;08.zip"
> pere@hola:~/Proves/prova$ touch "CopiaLlums\ 2006-09-09\ 14\;10\;08.zip"
>
> pere@hola:~/Proves/prova$ ls
> CopiaLlums 2006-09-09 14;10;08.zip CopiaLlums\ 2006-09-09\ 14\;10\;08.zip
>
> pere@hola:~/Proves/prova$ for i in *
> > do
> > echo $i
> > done
> CopiaLlums 2006-09-09 14;10;08.zip
> CopiaLlums\ 2006-09-09\ 14\;10\;08.zip
>
> Como puedes ver echo se comporta correctamente con cualquiera de los
> dos ficheros.
>
>
>
> > Saludos.
>
> Salut
> Pere
Re: Shell script; mostrar una variable con \ incluidos
Author: Pascal Bourguignon
Date: Tue, 19 Sep 2006 08:56
Date: Tue, 19 Sep 2006 08:56
24 lines
2187 bytes
2187 bytes
"Marcpp" <marcpp@gmail.com> writes:
> Bones
> He estado probando varias cosas mas, pero sigue sin funcionar.
>
> Una aclaraci�n:
> Tengo el fichero " CopiaLlums 2006-09-09 14;10;08.zip ", para acceder a
> el, por
> ejemplo hacer un... tar -r CopiaLlums\ 2006-09-09\ 14\;10\;08.zip
> tengo que escribir todas las \.
Ah� es tu error.
No tienes que escribir ninguna \ si no estan en el nombre del archivo.
Si tu archivo contiene espacios, solo tienes que escribir espacios:
tar -r 'CopiaLlums 2006-09-09 14;10;08.zip'
--
__Pascal Bourguignon__ http://www.informatimago.com/
Our enemies are innovative and resourceful, and so are we. They never
stop thinking about new ways to harm our country and our people, and
neither do we. -- Georges W. Bush
Re: Shell script; mostrar una variable con \ incluidos
Author: Pere Pujal i Carabantes
Date: Tue, 19 Sep 2006 22:44
Date: Tue, 19 Sep 2006 22:44
57 lines
2798 bytes
2798 bytes
Hola Marcpp!
El 19-09-2006
Marcpp va escriure en
es.comp.os.linux.programacion:
> Bones
> He estado probando varias cosas mas, pero sigue sin funcionar.
> Una aclaraci�n:
> Tengo el fichero " CopiaLlums 2006-09-09 14;10;08.zip ", para acceder a
> el, por
> ejemplo hacer un... tar -r CopiaLlums\ 2006-09-09\ 14\;10\;08.zip
> tengo que escribir todas las \.
Como ya te han comentado, si lo pones entre comillas te ahorras las barras.
> FT2=fitxtemp2 # Fichero con nombres de archivo con \
> cat $FT2 | while read L
> do
> X=`echo $L | cut -d " " -f 2` # No
Y como tambien te han comentado, las comillas no las pierdes en el echo.
Mira este poco de codigo:
cat fitxers
CopiaLlums 2006-09-09 14;10;08.zip
CopiaLlums\ 2006-09-09\ 14\;10\;08.zip
CopiaLlums\\ 2006-09-09\\ 14\\;10\\;08.zip
#!/bin/bash
cat fitxers|while read 'L'
do
if [[ $L == "CopiaLlums\ 2006-09-09\ 14\;10\;08.zip" ]]
then echo "Bona vvvvvvv";echo $L;echo "Bona ^^^^^^^^^"
else echo "No vvvvvv"; echo $L; echo "No ^^^^^^^^^"
fi
echo
done
La comparacion va a dar como correcta la tercera linea, lo que quiere
decir que las barras las has perdido en el read.
De hecho lo tienes documentado en el man de bash:
A non-quoted backslash (\) is the escape character. It preserves the
literal value of the next character that follows, with the exception
of <newline>
Creo que lo de escapar las barras \\ tambien se habia comentado.
> Salutacions.
Saut
Pere
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads