Convertir cadena a entero en Bash
- Operaciones Matemáticas en Cadenas
-
Utilice el comando
expr
para convertir cadenas en enteros -
Use la construcción de doble paréntesis
((...))
para convertir una cadena en un entero -
Utilice el comando Calculadora básica (
bc
) para convertir cadenas en enteros -
Utilice el comando
awk
para convertir cadenas en enteros -
Utilice
perl...print
operl...say
para convertir cadenas en enteros - Usar Python para convertir cadenas en enteros
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.