¿Cómo contar cadenas como números en Bash?
Así como todo en Linux es un archivo, todo en bash es una cadena.
Técnicamente, no hay tipos de datos en Bash; esencialmente, las variables de Bash son solo cadenas.
Esto crea problemas cuando intentas hacer aritmética en bash, los números que intentas sumar te dan resultados extraños.
Para convertir cadenas a números enteros en bash, envuélvalas en $((X)), así:
Si la cadena tiene un número reconocido, será tratada como un número , el ejemplo que mostré arriba se puede corregir a:
Veamos la conversión de cadena a número con más detalle para que puedas usar cálculos aritméticos en bash.
Puedes comprobar el número asignado:
Ahora intentemos sumar dos números y almacenar el valor en la tercera variable c:
Como puedes ver en el resultado anterior, c también se trata como una cadena.
Para que la suma se realice correctamente, es necesario "convertirla" mediante una expansión aritmética:
Tenga en cuenta que c en realidad sigue siendo una cadena hasta que implícitamente utilice la misma expansión aritmética para realizar Otra operación que discutiré más adelante.
Lo anterior equivale a:
dUsemos una tercera variable para otra operación:
Ahora para la segunda operación:
En la expresión anterior, el producto de byc se calcula primero y la suma y la resta se calculan al final.
Como mencioné antes, cualquier cosa que hagas entre $((...)) se considera una operación aritmética.
Mezclar cadenas y números enteros sigue siendo más seguro que mezclar Coca-Cola y menta. Sin embargo, produce un resultado extraño.
Solo funciona si tiene números (como una cadena), si es una cadena simple no se convertirá mágicamente en algún número, sino que se ignorará, como en el ejemplo anterior visto en.
También puede utilizar la herramienta expr para la evaluación, pero tenga en cuenta que no es un programa Bash "nativo", ya que necesita tener instalado coreutils (de forma predeterminada en Ubuntu) como un paquete separado.