Re: [OT] - otra de bash - in
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
#!/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
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 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
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
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
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
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
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
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 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 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