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
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