Re: [OT] - otra de bash - in

2010-11-20 Por tema Camaleón
El Tue, 16 Nov 2010 13:15:59 +0100, Javier Barroso escribió:

 On Tue, Nov 16, 2010 at 1:11 PM, Camaleón wrote:
 #!/bin/sh

 X=a1 a2 a3

 read A

 if [[ $X =~ $A ]]; then
        echo $A esta en $X
 else
        echo $A No esta en $X
 fi

 Hay que tener cuidado con este tipo de expresiones, ya que pueden dar
 falsos positivos
 
 X=a1no a2 a3
 
 read A:
 Respuesta: a1
 
 $X =~ $A == OK

¡¡Grrr!! Cierto :-)

Según el manual¹, el segundo operador se convierte en una expresión 
regular extendida así que debería permitir los mismos filtros para 
delimitar la palabra exacta, p. ej.:


#!/bin/sh

X=a1no a2 a3

read A

if [[ $X =~ ^$A|$A | $A ]]; then
echo $A esta en $X
else
echo $A No esta en $X
fi



¹http://www.gnu.org/software/bash/manual/html_node/Conditional-Constructs.html

Saludos,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/pan.2010.11.16.14.28...@gmail.com



[OT] - otra de bash - in

2010-11-16 Por tema Mariano Cediel
#!/bin/sh

X=a1 a2 a3

read A
if [ $A in $X ]; then
echo $A esta en $X
else
echo $A No esta en $X
fi

lo que no funciona, es lo del [ $A in $X ] como ya sabreis.
Alguna forma elegante de solucionarlo que NO sea recorriendo el $X
componente a componente ¿?

Saludos y muchas gracias.

-- 

        [o - -  -   -    -      -
   (\   |                  u d t
   (  \_('              c c s
   (__(=_)             s o ?
      -=


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktikkgzxa0ktdppg8l=hwy7a4qv=oi-mzz0ok9...@mail.gmail.com



Re: [OT] - otra de bash - in

2010-11-16 Por tema mariodebian
El mar, 16-11-2010 a las 12:37 +0100, Mariano Cediel escribió:
 #!/bin/sh
 
 X=a1 a2 a3
 
 read A
 if [ $A in $X ]; then
 echo $A esta en $X
 else
 echo $A No esta en $X
 fi
 
 lo que no funciona, es lo del [ $A in $X ] como ya sabreis.
 Alguna forma elegante de solucionarlo que NO sea recorriendo el $X
 componente a componente ¿?


if echo $X | grep -q  $A ; then
  echo $A esta en $X
fi




-- 
Saludos
--
http://mariodebian.com


signature.asc
Description: This is a digitally signed message part


Re: [OT] - otra de bash - in

2010-11-16 Por tema Mariano Cediel
2010/11/16 mariodebian mariodeb...@gmail.com:
 if echo $X | grep -q  $A ; then
  echo $A esta en $X
 fi

Tan sencillo, que me da vergüenza no haberlo pensado yo.
Muchas gracias


-- 

        [o - -  -   -    -      -
   (\   |                  u d t
   (  \_('              c c s
   (__(=_)             s o ?
      -=


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktiny1aw0rd_kx2=sw=dkjwcoakunszb4uffjf...@mail.gmail.com



Re: [OT] - otra de bash - in

2010-11-16 Por tema Javier Barroso
On Tue, Nov 16, 2010 at 12:54 PM, Mariano Cediel
mariano.ced...@gmail.com wrote:
 2010/11/16 mariodebian mariodeb...@gmail.com:
 if echo $X | grep -q  $A ; then
  echo $A esta en $X
 fi

 Tan sencillo, que me da vergüenza no haberlo pensado yo.

Más bien tendríá que ser así (va sin probar):
if echo $X | grep -q ^$A \| $A \| $A$\|^$A$ ; then ...

Si no te puedes saltar casos :)

Saludos


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktintmu6waugctxebd_eihggxp0opfojidfk+2...@mail.gmail.com



Re: [OT] - otra de bash - in

2010-11-16 Por tema Camaleón
El Tue, 16 Nov 2010 12:37:21 +0100, Mariano Cediel escribió:

 #!/bin/sh
 
 X=a1 a2 a3
 
 read A
 if [ $A in $X ]; then
 echo $A esta en $X
 else
 echo $A No esta en $X
 fi
 
 lo que no funciona, es lo del [ $A in $X ] como ya sabreis. Alguna forma
 elegante de solucionarlo que NO sea recorriendo el $X componente a
 componente ¿?

#!/bin/sh

X=a1 a2 a3

read A

if [[ $X =~ $A ]]; then
echo $A esta en $X
else
echo $A No esta en $X
fi

Saludos,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/pan.2010.11.16.12.11...@gmail.com



Re: [OT] - otra de bash - in

2010-11-16 Por tema Juan Antonio
El 16/11/10 13:07, Javier Barroso escribió:
 On Tue, Nov 16, 2010 at 12:54 PM, Mariano Cediel
 mariano.ced...@gmail.com wrote:
 2010/11/16 mariodebian mariodeb...@gmail.com:
 if echo $X | grep -q  $A ; then
  echo $A esta en $X
 fi
 Tan sencillo, que me da vergüenza no haberlo pensado yo.
 Más bien tendríá que ser así (va sin probar):
 if echo $X | grep -q ^$A \| $A \| $A$\|^$A$ ; then ...

 Si no te puedes saltar casos :)

 Saludos


O usar el -w de grep.

Un saludo.


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4ce27582.6070...@limbo.ari.es



Re: [OT] - otra de bash - in

2010-11-16 Por tema Javier Barroso
On Tue, Nov 16, 2010 at 1:11 PM, Camaleón noela...@gmail.com wrote:
 #!/bin/sh

 X=a1 a2 a3

 read A

 if [[ $X =~ $A ]]; then
        echo $A esta en $X
 else
        echo $A No esta en $X
 fi
Hay que tener cuidado con este tipo de expresiones, ya que pueden dar
falsos positivos

X=a1no a2 a3

read A:
Respuesta: a1

$X =~ $A == OK

Saludos,


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktikayaooglgo0nn0yyh=w_4jhxu2=dqazqtzp...@mail.gmail.com



Re: [OT] - otra de bash - in

2010-11-16 Por tema Agustin Martin
On Tue, Nov 16, 2010 at 12:41:50PM +0100, mariodebian wrote:
 El mar, 16-11-2010 a las 12:37 +0100, Mariano Cediel escribió:
  #!/bin/sh
  
  X=a1 a2 a3
  
  read A
  if [ $A in $X ]; then
  echo $A esta en $X
  else
  echo $A No esta en $X
  fi
  
  lo que no funciona, es lo del [ $A in $X ] como ya sabreis.
  Alguna forma elegante de solucionarlo que NO sea recorriendo el $X
  componente a componente ¿?
 
 
 if echo $X | grep -q  $A ; then
   echo $A esta en $X
 fi

Fallaría en el primero y en el último que no tienen espacio en blanco en un
lado.

Puedes probar con

if echo $X | tr -s ' ' '\n' | grep -q ^$A$; then
  echo $A esta en $X
fi

Seguramente hay una forma más elegante, preferiblemente portable.

-- 
Agustin


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20101116115423.ga20...@agmartin.aq.upm.es



Re: [OT] - otra de bash - in

2010-11-16 Por tema mariodebian
El mar, 16-11-2010 a las 13:07 +0100, Javier Barroso escribió:
 On Tue, Nov 16, 2010 at 12:54 PM, Mariano Cediel
 mariano.ced...@gmail.com wrote:
  2010/11/16 mariodebian mariodeb...@gmail.com:
  if echo $X | grep -q  $A ; then
   echo $A esta en $X
  fi
 
  Tan sencillo, que me da vergüenza no haberlo pensado yo.
 
 Más bien tendríá que ser así (va sin probar):
 if echo $X | grep -q ^$A \| $A \| $A$\|^$A$ ; then ...
 
 Si no te puedes saltar casos :)
 

Cierto pero a lo mejor es más sencillo meter espacios en la X en lugar
de usar una expresión más compleja:

if echo  $X  | grep -q  $A ; then
  echo $A esta en $X
fi



-- 
Saludos
--
http://mariodebian.com


signature.asc
Description: This is a digitally signed message part


Re: [OT] - otra de bash - in

2010-11-16 Por tema Marc Aymerich
2010/11/16 mariodebian mariodeb...@gmail.com:
 El mar, 16-11-2010 a las 13:07 +0100, Javier Barroso escribió:
 On Tue, Nov 16, 2010 at 12:54 PM, Mariano Cediel
 mariano.ced...@gmail.com wrote:
  2010/11/16 mariodebian mariodeb...@gmail.com:
  if echo $X | grep -q  $A ; then
   echo $A esta en $X
  fi
 
  Tan sencillo, que me da vergüenza no haberlo pensado yo.

 Más bien tendríá que ser así (va sin probar):
 if echo $X | grep -q ^$A \| $A \| $A$\|^$A$ ; then ...

 Si no te puedes saltar casos :)


 Cierto pero a lo mejor es más sencillo meter espacios en la X en lugar
 de usar una expresión más compleja:

 if echo  $X  | grep -q  $A ; then
  echo $A esta en $X
 fi


Si vas a meter espacios puedes probar con:
if ! [[ ${x//* $a */} ]]; then
  echo $a esta;
else
  echo $a no esta;
fi

aunque siempre es mejor hacer código que interprete bien todos los
inputs posible.

-- 
Marc


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktim6cyhrqmqbrjjap0tdh99xrj=km0zqqkb8u...@mail.gmail.com



Re: [OT] - otra de bash - in

2010-11-16 Por tema Marc Aymerich
2010/11/16 Camaleón noela...@gmail.com:
 El Tue, 16 Nov 2010 13:15:59 +0100, Javier Barroso escribió:

 On Tue, Nov 16, 2010 at 1:11 PM, Camaleón wrote:
 #!/bin/sh

 X=a1 a2 a3

 read A

 if [[ $X =~ $A ]]; then
        echo $A esta en $X
 else
        echo $A No esta en $X
 fi

 Hay que tener cuidado con este tipo de expresiones, ya que pueden dar
 falsos positivos

 X=a1no a2 a3

 read A:
 Respuesta: a1

 $X =~ $A == OK

 ¡¡Grrr!! Cierto :-)

 Según el manual¹, el segundo operador se convierte en una expresión
 regular extendida así que debería permitir los mismos filtros para
 delimitar la palabra exacta, p. ej.:



Muy interesante esa funcionalidad :)


-- 
Marc


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktim418rmo1t=pm_z49fvxqupn6kh5vfsh5g4p...@mail.gmail.com