Convertir cadena a entero en Bash

Abdul Mateen 20 junio 2023
  1. Operaciones Matemáticas en Cadenas
  2. Utilice el comando expr para convertir cadenas en enteros
  3. Use la construcción de doble paréntesis ((...)) para convertir una cadena en un entero
  4. Utilice el comando Calculadora básica (bc) para convertir cadenas en enteros
  5. Utilice el comando awk para convertir cadenas en enteros
  6. Utilice perl...print o perl...say para convertir cadenas en enteros
  7. Usar Python para convertir cadenas en enteros
Convertir cadena a entero en Bash

Este tutorial discutirá la conversión de cadenas a enteros en el script Bash. Primero, discutiremos problemas con las operaciones matemáticas en cadenas y luego veremos cómo convertir una cadena en un número entero.

Operaciones Matemáticas en Cadenas

Comencemos nuestra discusión con este código simple:

x_value=1000
y_value=20
echo $x_value+$y_value

El resultado de este código puede ser inesperado. Ver salida:

1000+20

El comando echo concatena el valor de la variable x_value con un signo más y la variable y_value. Probablemente, no estaba interesado en obtener este resultado; más bien, esperaba 1020 como salida.

Después de discutir el problema, exploremos formas de evitarlo y obtener los resultados deseados.

Utilice el comando expr para convertir cadenas en enteros

Este comando se utiliza para evaluar expresiones y obtener los resultados. Por ejemplo:

$ expr 12 - 8

La salida de este comando será 4. Podemos usar este comando para obtener el resultado requerido:

x_value=1000
y_value=20
expr $x_value + $y_value

La salida de este script es 1020; sin embargo, tenga en cuenta que se requieren espacios entre la variable y el operador. De lo contrario, este comando también realizará la concatenación y el resultado será el mismo.

Nota: Es obligatorio agregar el espacio adecuado entre los operandos y operadores. Facilita que expr reconozca cada token por separado.

Use la construcción de doble paréntesis ((...)) para convertir una cadena en un entero

El constructor de doble paréntesis (( ... )) permite la expansión y evaluación aritmética; por ejemplo, x_value=$(( 6 - 2 )) establecería x_value en 4. Podemos usar esta construcción para obtener el resultado requerido.

Veamos un script de ejemplo:

x_value=1000
y_value=20
echo $(( x_value * y_value ))

La salida de este script será 20000.

Utilice el comando Calculadora básica (bc) para convertir cadenas en enteros

En Bash, la calculadora básica (bc) se utiliza para realizar cálculos aritméticos fundamentales directamente desde la interfaz de comandos de Bash.

Por ejemplo, podemos escribir:

$ echo "12-4" | bc

La salida es 8. Podemos usar esta calculadora básica para obtener los resultados requeridos.

El código para resolver nuestro problema original usando bc se ve así:

x_value=1000
y_value=20
echo $x_value-$y_value | bc

La salida es 980. En esta expresión no se requieren espacios como estos eran obligatorios en el comando expr.

Utilice el comando awk para convertir cadenas en enteros

El awk es un comando precompilado que permite al usuario imprimir expresiones formateadas que contienen variables, funciones numéricas, funciones de cadena y operadores lógicos. Puede utilizar este comando de varias maneras.

Por ejemplo, si desea imprimir algún mensaje con algunos cálculos numéricos formateados, puede usar el comando echo con el comando awk como:

$ echo salary= 40000 10 | awk '{print $1 $2+$2*$3/100}'

En este comando, queremos imprimir el salario, donde el salario incluye una bonificación del 10%. Aquí, salary= es nuestro primer parámetro. Lo hemos usado escribiendo $1.

De manera similar, 40000 es el segundo parámetro utilizado al escribir $2; De manera similar, $3 es un marcador de posición para el tercer parámetro (es decir, 10).

La salida de este comando es:

salary=44000

Podemos usar el comando awk para resolver nuestro problema original como:

x_value=1000
y_value=20
echo $x_value $y_value | awk '{print $1 + $2}'

La salida será 1020, donde x e y son dos parámetros recibidos por el comando awk. Los cálculos se realizan en consecuencia.

Utilice perl...print o perl...say para convertir cadenas en enteros

Tenemos las opciones print o say en el comando perl. La diferencia entre print y say es que print no alimentará la línea, y la siguiente salida vendrá en la misma línea, mientras que el comando say alimentará la línea.

Por ejemplo:

x_value = 5
perl -E "print $x_value"
echo "*"
perl -E "say $x_value"
echo "*"

La salida será:

5*5
*

Tenga en cuenta que el segundo asterisco se imprime en la línea siguiente debido al avance de línea por “decir” en lugar de “imprimir”.

Por lo tanto, podemos usar el perl con print o say para obtener nuestra salida requerida:

x_value=1000
y_value=20
perl -E "print $x_value+$y_value"

La salida será 1020.

Usar Python para convertir cadenas en enteros

Python tiene una declaración de print que puede evaluar e imprimir una expresión.

Por ejemplo:

python -c "print 5 * 4"

La salida será 20. Podemos usar esto para obtener los resultados requeridos.

El código se muestra a continuación:

x_value=1000
y_value=20
python -c "print $x_value * $y_value"

La salida es 20000.

Tenemos una variedad de formas de convertir una cadena en una variable entera para realizar operaciones matemáticas. Aquí, hemos presentado seis formas diferentes, y puede usar cualquiera según su elección.

Artículo relacionado - Bash String