Androide

Cómo comparar cadenas en bash

Comparar cadenas en shell script

Comparar cadenas en shell script

Tabla de contenido:

Anonim

Al escribir scripts de Bash, a menudo necesitará comparar dos cadenas para verificar si son iguales o no. Dos cadenas son iguales cuando tienen la misma longitud y contienen la misma secuencia de caracteres.

Este tutorial describe cómo comparar cadenas en Bash.

Operadores de comparación

Los operadores de comparación son operadores que comparan valores y devuelven verdadero o falso. Al comparar cadenas en Bash, puede usar los siguientes operadores:

  • string1 = string2 y string1 == string2 : el operador de igualdad devuelve verdadero si los operandos son iguales.
    • Use el operador = con la test ; then echo "Strings are equal." else echo "Strings are not equal." fi ; then echo "Strings are equal." else echo "Strings are not equal." fi

      Cuando se ejecuta el script, imprimirá el siguiente resultado.

      Strings are equal.

      Aquí hay otro script que toma la entrada del usuario y compara las cadenas dadas. En este ejemplo, usaremos el ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Ejecute el script e ingrese las cadenas cuando se le solicite:

      Enter first string: Linuxize Enter second string: Ubuntu Strings are not equal.

      También puede usar la lógica y && y or || para comparar cadenas:

      ] && echo "Equal" || echo "Not equal"

      Not equal

      Compruebe si una cadena contiene una subcadena

      Hay varias formas de verificar si una cadena contiene una subcadena.

      Un enfoque es usar rodear la subcadena con símbolos de asterisco * que significa que coinciden con todos los caracteres.

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      El script hará eco de lo siguiente:

      It's there.

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

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      El período seguido de un asterisco .* Coincide con cero o más ocurrencias de cualquier carácter, excepto un carácter de nueva línea.

      Compruebe si una cadena está vacía

      Muy a menudo también necesitará verificar si una variable es una cadena vacía o no. Puede hacer esto utilizando los operadores -n y -z .

      #!/bin/bash VAR='' if]; then echo "String is empty." fi

      String is empty.

      #!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi

      String is not empty.

      Comparación de cadenas con el operador de caso

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

      #!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac

      Linuxize matched.

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

      Los siguientes scripts comparan dos cadenas lexicográficamente:

      #!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi

      El script generará lo siguiente:

      Ubuntu is lexicographically greater than Linuxize.

      Conclusión

      La comparación de cadenas es una de las operaciones más básicas y de uso frecuente en las secuencias de comandos Bash. Después de leer este tutorial, debe tener una buena comprensión de cómo comparar cadenas en Bash. También puede consultar nuestra guía sobre concatenación de cadenas.

      terminal de bash