Introducción
Al escribir scripts Bash, a menudo es necesario comparar dos cadenas para ver 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 utilizar los siguientes operadores:
string1 = string2
ystring1 == string2
: el operador de igualdad devuelve verdadero si los operandos son iguales.- Utilice el
=
con latest
[
- Utilice el
==
con el[[
para la coincidencia de patrones. string1!= string2
: el operador de desigualdad devuelve verdadero si los operandos no son iguales.string1 =~ regex
: el operador de expresiones regulares devuelve verdadero si el operando de la izquierda coincide con la expresión regular extendida de la derecha.string1 > string2
: el operador mayor que devuelve verdadero si el operando izquierdo es mayor que el derecho ordenado por orden lexicográfico (alfabético).string1 < string2
: el operador menor que devuelve verdadero si el operando derecho es mayor que el derecho ordenado 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.
A continuación, se muestran algunos puntos a tener en cuenta al comparar cadenas:
- Debe utilizar un espacio en blanco entre el operador binario y los operandos.
- Utilice siempre comillas dobles alrededor de los nombres de las variables para evitar la división de palabras o problemas de agrupamiento.
- Bash no separa las variables por "tipo", las variables se tratan como enteros o cadenas según el contexto.
Comprueba si dos cadenas son iguales
En la mayoría de los casos, al comparar cadenas, desea verificar si las cadenas son iguales o no.
El siguiente script usa la instrucción if y el [
test para verificar si las cadenas son iguales o no con el operador =
#!/bin/bash
VAR1="Noviello"
VAR2="Noviello"
if [ "$VAR1" = "$VAR2" ]; then
echo "Strings are equal."
else
echo "Strings are not equal."
fi
Cuando se ejecuta el script, se imprimirá la siguiente salida.
Strings are equal.
Aquí hay otro script que toma la entrada del usuario y compara las cadenas dadas. En este ejemplo, usaremos el [[
y el operador ==
#!/bin/bash
read -p "Enter first string: " VAR1
read -p "Enter second string: " VAR2
if [[ "$VAR1" == "$VAR2" ]]; 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: Noviello
Enter second string: Ubuntu
Strings are not equal.
También puede utilizar las cadenas lógicas &&
o