Comparar cadenas en shell script
Tabla de contenido:
- Operadores de comparación
- Compruebe si una cadena contiene una subcadena
- Compruebe si una cadena está vacía
- Comparación de cadenas con el operador de caso
- Comparación lexicográfica
- Conclusión
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
ystring1 == string2
: el operador de igualdad devuelve verdadero si los operandos son iguales.- Use el operador
=
con latest
; 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"
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
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
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
- Use el operador
Bash concatenar cadenas
La concatenación de cadenas es solo una palabra de programación elegante para unir cadenas agregando una cadena al final de otra cadena. En este tutorial explicaremos cómo concatenar cadenas en Bash.
Cómo convertir cadenas en enteros en python
A menudo, al escribir código Python, necesitará convertir un tipo de datos a otro. En Python puede convertir una cadena a un número entero utilizando la función incorporada int ().
Cómo usar sed para buscar y reemplazar cadenas en archivos
sed es un editor de flujo. Con sed puede buscar, encontrar y reemplazar, insertar y eliminar cadenas y líneas. Admite expresiones regulares básicas y extendidas que le permiten combinar patrones complejos.