[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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


Reply to: