🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#889
Author: Marcpp
Date: Mon, 18 Sep 2006 16:20
9 lines
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
#891
Author: Luis Angel Fdez. Fdez.
Date: Mon, 18 Sep 2006 16:41
23 lines
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
#892
Author: Marcpp
Date: Mon, 18 Sep 2006 20:10
36 lines
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
#894
Author: Pere Pujal i Carabantes
Date: Mon, 18 Sep 2006 21:14
48 lines
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
#895
Author: Claudio
Date: Mon, 18 Sep 2006 22:28
12 lines
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
#707
Author: Marcpp
Date: Tue, 19 Sep 2006 07:46
99 lines
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
#708
Author: Pascal Bourguignon
Date: Tue, 19 Sep 2006 08:56
24 lines
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
#710
Author: Pere Pujal i Carabantes
Date: Tue, 19 Sep 2006 22:44
57 lines
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