Cómo comparar cadenas en Bash

top feature image

Cómo comparar cadenas en Bash

Valora este artículo:
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 votos, promedio: 5,00 de 5)
Cargando…

Una vez más aquí. Esta noche mientras espero que termine el renderizado de un pequeño proyecto con el que ando liado, me he decidido a escribir un artículo que tenía pendiente sobre cómo comparar cadenas en bash. La verdad es que en mi día a día suelo utilizar scripts muy a menudo. En ocasiones los escribo yo y en otras son de otra gente. El caso es que cuando se escriben scripts de Bash, a menudo hay que comparar dos cadenas para comprobar si son iguales o no.

Dos cadenas se consideran iguales cuando tienen la misma longitud y contienen la misma secuencia de caracteres. Como he escrito, en las siguientes líneas vamos a ver cómo comparar cadenas en Bash con lo que quiero completar un poco el artículo que escribí hace algún tiempo sobre cómo realizar comparaciones con Bash Shell Script.

Operadores de comparación

Algo que conviene conocer a la hora de realizar los scripts son los operadores de comparación. Estos son operadores que comparan valores y devuelven verdadero o falso. Cuando comparamos cadenas en Bash, se pueden utilizar los siguientes operadores:

  • string1 = string2 y string1 == string2: El operador de igualdad devuelve true si las cadenas son iguales.
    • Usa el operador = con la prueba [ comando.
    • Usa el operador == con el comando [[ para la coincidencia de patrones.
  • string1 != string2: el operador de desigualdad devuelve true si las cadenas no son iguales.
  • string1 =~ regex: El operador de expresiones regulares devuelve true si la cadena de la izquierda coincide con la expresión regular de la derecha.
  • string1 > string2: El operador mayor que devuelve verdadero si el operador la izquierda es mayor que el de la derecha, ordenado por orden lexicográfico (alfabético).
  • string1 < string2: El operador menor que devuelve verdadero si el operando de la derecha es mayor que el de la izquierda, por orden lexicográfico (alfabético).
  • -z string: Verdadero si la longitud de la cadena es cero.
  • -n string: Verdadero si la longitud de la cadena no es cero.

Comparar cadenas utilizando bash

Lo siguiente que es bueno tener en cuenta al comparar cadenas es:

  • Debe usarse un espacio en blanco entre el operador binario y los operandos.
  • Utilizar siempre comillas dobles alrededor de los nombres de las variables para evitar cualquier división de palabras o problemas de globos.
  • Bash no segrega las variables por ‘tipo’, las variables se tratan como enteros o cadenas según el contexto.

Ejemplos para comparar cadenas utilizando bash

Verifica si las dos cadenas son iguales

En la mayoría de los casos, al comparar cadenas se busca verificar si las cadenas son iguales o no.

La siguiente secuencia de comandos usa la prueba [ comando para verificar si las cadenas son iguales o no con el operador =:

Cuando se ejecuta el script, se imprimirá la salida: Las cadenas son iguales.

Aquí hay otro script que toma la entrada del usuario y compara las cadenas dadas. En este ejemplo, usaremos el [[ comando y ==.

Al ejecutar el script habrá que escribir las cadenas cuando se le solicite:

También se pueden utilizar && y o || para comparar las cadenas:

Comprobar si una cadena contiene una subcadena

Como con casi todo, hay varias formas de verificar si una cadena contiene una subcadena.

Un enfoque es rodear la subcadena con símbolos de asterisco *, lo que significa que buscamos que coincidan con todos los caracteres.

El script mostrará de lo siguiente:

Otra opción es usar el operador de expresiones regulares = ~ como se muestra a continuación:

Verifique si una cadena está vacía

Muy a menudo, también podemos necesitar verificar si una variable es una cadena vacía o no. Puedes hacer esto usando los operadores -n y -z.

Comparación de cadenas con el operador de caso

En lugar de usar los operadores de prueba, también se puede usar la declaración del caso para comparar las cadenas:

Comparación lexicográfica

La comparación lexicográfica es una operación en la que dos cadenas se comparan alfabéticamente al comparar los caracteres en una cadena secuencialmente de izquierda a derecha. Este tipo de comparación rara vez se utiliza.

Los siguientes scripts comparan dos cadenas lexicográficamente:

La comparación de cadenas es una de las operaciones más básicas y utilizadas en los scripts de Bash. Esto no es más que un pequeño conjunto de TIPS para tenerlo a mano, pero si ayuda a alguien, pues me alegro.





Resumen
Comparar cadenas utilizando bash. Algunos ejemplos sencillos
Nombre
Comparar cadenas utilizando bash. Algunos ejemplos sencillos
Descripción
Aquí vas a poder encontrar algunos ejemplos para poder comparar cadenas utilizando bash.
Autor
Nombre del editor
entreunosyceros
Logo del editor