Cadena de argumentos a entero en bash

Pregunta:

Tratando de averiguar cómo convertir un argumento en un número entero para realizar operaciones aritméticas y luego imprimirlo, digamos para addOne.sh :

echo $1 + 1
>>sh addOne.sh 1
prints 1 + 1

Respuesta:

En bash, uno no "convierte un argumento en un número entero para realizar operaciones aritméticas". En bash, las variables se tratan como enteros o cadenas según el contexto.

Para realizar operaciones aritméticas, debe invocar el operador de expansión aritmética $((...)) . Por ejemplo:

$ a=2
$ echo "$a + 1"
2 + 1
$ echo "$(($a + 1))"
3

o generalmente preferido:

$ echo "$((a + 1))"
3

Debe tener en cuenta que bash (a diferencia de ksh93, zsh o yash) solo realiza aritmética de enteros . Si tiene números de punto flotante (números con decimales), existen otras herramientas para ayudarlo. Por ejemplo, use bc :

$ b=3.14
$ echo "$(($b + 1))"
bash: 3.14 + 1: syntax error: invalid arithmetic operator (error token is ".14 + 1")
$ echo "$b + 1" | bc -l
4.14

O puede usar un shell con soporte aritmético de punto flotante en lugar de bash:

zsh> echo $((3.14 + 1))
4.14

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım