Comparación de cadenas en Bash

Ultima actualización en
domingo 24º abr. 2022

bash string comparison

Al escribir scripts Bash, a menudo tendrá que comparar dos cadenas para verificar si son iguales o no.

Operadores de comparación

  • Los operadores de comparación son operadores que comparan valores y devuelven true o false.

  • string1 = string2 y string1 == string2 – El operador de igualdad devuelve true si los operandos son iguales.

  • Utilice el operador = con el comando test [.
  • Utilice el operador == con el comando [[ para la coincidencia de patrones.
  • string1 != string2 – El operador de desigualdad devuelve true si los operandos no son iguales.
  • string1 =~ regex – El operador regex devuelve true si el operando izquierdo coincide con la expresión regular extendida de la derecha.
  • string1 > string2 – El operador mayor que devuelve true si el operando izquierdo es mayor que el derecho ordenado por orden lexicográfico (alfabético).
  • string1 < string2 – El operador less than devuelve true si el operando derecho es mayor que el derecho ordenado por orden lexicográfico (alfabético).
  • z string – True si la longitud de la cadena es cero.
  • n string – True si la longitud de la cadena es distinta de cero.

compare strings bash

Compruebe si dos cadenas son iguales

	str1="CodeJagd"
str2="CodeJagd"

if [ $str1 = $str2 ]; then
    echo "Equal"
else
    echo "Not equal"
fi
	

Salida

	Equal
	

Si desea tomar la entrada del usuario y comparar las cadenas dadas. En este ejemplo, usaremos el comando [[ y el operador ==

	read -p "Enter first string: " str1
read -p "Enter second string: " str2

if [ $str1 = $str2 ]; then
    echo "Equal"
else
    echo "Not equal"
fi
	

Salida

	Enter first string: code
Enter second string: code
Equal
	

También puede usar el lógico y && y/o || para comparar cadenas

	read -p "Enter first string: " str1
read -p "Enter second string: " str2

[[ "$str1" == "$str2" ]] && echo "Equal" || echo "Not equal"
	

Salida

	Enter first string: code
Enter second string: code
Equal
	

bash compare strings

Comprobar si una cadena contiene una subcadena

Opción 1: Usar el símbolo ‘*’

Con símbolos de asterisco * que significa que coinciden con todos los caracteres.

	str1='Hello World'
if [[ $str1 == *"World"* ]]; then
  echo "Present"
else
  echo "Not Present"
fi
	

Salida

	Present
	

Opción 2 : Utilice el operador =~

  • Con el operador regex =~ que significa coincidir con todos los caracteres.
  • .* coincide con cero o más ocurrencias de cualquier carácter
	str1='Hello World'
if [[ $str1 =~ .*World.*  ]]; then
  echo "Present"
else
  echo "Not Present"
fi
	

Salida

	Present
	

bash string eq

Comprobar si una cadena está vacía

Puede comprobar si una variable es una cadena vacía o no utilizando los operadores -n y -z.

Using -z Operator

	str1='Hello World'
if [[ -z $str1 ]]; then
  echo "Empty"
else
  echo "Not Empty"
fi
	

Salida

	Not Empty
	

Uso del operador -n

	str1=' '
if [[ -n $str1 ]]; then
  echo "Empty"
else
  echo "Not Empty"
fi
	

Salida

	Empty
	

Comparing string es una de las operaciones más básicas y utilizadas con frecuencia en el scripting Bash.