Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

¿Cómo comprobar si una variable de Bash contiene una determinada cadena de texto?

23 de octubre de 2011

En un script de bash tengo una cadena definida de la siguiente manera:

string=`echo Mi cadena`

¿Cómo puedo comprobar mediante código si esa cadena contiene otra cadena especificada? Algo como lo siguiente, pero sustituyendo ?? por algún operador, alguna expresión o algo que funcione:

if [ $string ?? 'lo que sea' ] then;
  echo "La cadena está contenida en la variable";
fi;

También podría usar grep, pero me parece una solución un poco engorrosa:

if [ `echo $string || grep 'lo que sea' ` ] then;
  echo "La cadena está contenida en la variable";
fi;
Estás leyendo una traducción autorizada de la pregunta String contains in bash planteada por davidsheldon en StackOverflow.

Respuestas

#1

Este es el código que puedes utilizar (fíjate bien en los asteriscos y los dobles corchetes):

string='Mi cadena';
 
if [[ $string == *lo que sea* ]]
then
  echo "La cadena está contenida en la variable";
fi

Si lo prefieres, también puedes utilizar esta otra solución basada en expresiones regulares:

string='Mi cadena';
 
if [[ $string =~ "lo que sea" ]]
then
   echo "La cadena está contenida en la variable"
fi

@librosweb

7 octubre 2014, 8:16