Una de las operaciones aritméticas más comunes cuando se escriben scripts de Bash es incrementar y decrementar variables. Esto se usa con mayor frecuencia en los bucles como un contador, pero también puede ocurrir en otras partes del script.
Incrementar y Decrementar significa sumar o restar un valor (generalmente 1
), respectivamente, del valor de una variable numérica. La expansión aritmética se puede realizar usando los paréntesis dobles ((...))
y $((...))
o con let
comando integrado.
En Bash, hay múltiples formas de incrementar/decrementar una variable. Este artículo explica algunos de ellos.
Usando +
y -
Operadores #
La forma más sencilla de incrementar/decrementar una variable es usando el +
y -
operadores.
i=$((i+1))
((i=i+1))
let "i=i+1"
i=$((i-1))
((i=i-1))
let "i=i-1"
Este método le permite incrementar/disminuir la variable por cualquier valor que desee.
Aquí hay un ejemplo de cómo incrementar una variable dentro de un until
bucle:
i=0
until [ $i -gt 3 ]
do
echo i: $i
((i=i+1))
done
i: 0
i: 1
i: 2
i: 3
El +=
y -=
Operadores #
Además de los operadores básicos explicados anteriormente, bash también proporciona los operadores de asignación +=
y -=
. Estos operadores se usan para incrementar/decrementar el valor del operando izquierdo con el valor especificado después del operador.
((i+=1))
let "i+=1"
((i-=1))
let "i-=1"
En el siguiente while
loop, estamos decrementando el valor de la i
variable por 5
.
i=20
while [ $i -ge 5 ]
do
echo Number: $i
let "i-=5"
done
Number: 20
Number: 15
Number: 10
Number: 5
Usando el ++
y --
Operadores #
El ++
y --
los operadores incrementan y decrementan, respectivamente, su operando en 1
y devolver el valor.
((i++))
((++i))
let "i++"
let "++i"
((i--))
((--i))
let "i--"
let "--i"
Los operadores pueden usarse antes o después del operando. También se les conoce como:
- incremento de prefijo:
++i
- decremento de prefijo:
--i
- incremento de postfijo:
i++
- decremento postfijo:
i--
Los operadores de prefijo primero incrementan/decrementan los operadores en 1
y luego devolver el nuevo valor de los operadores. Por otro lado, los operadores de sufijo devuelven el valor de los operadores antes de que se haya incrementado/decrementado.
Si solo desea incrementar/decrementar la variable, entonces no hay diferencia si usa el operador de prefijo o sufijo. Hace una diferencia solo si el resultado de los operadores se usa en alguna otra operación o se asigna a otra variable.
Los siguientes ejemplos demuestran cómo ++
el operador funciona cuando se usa antes y después de su operante:
x=5
y=$((x++))
echo x: $x
echo y: $y
x: 6
y: 5
x=5
y=$((++x))
echo x: $x
echo y: $y
x: 6
y: 6
A continuación se muestra un ejemplo de cómo usar el incrementador de postfijo en un script bash:
#!/bin/bash
i=0
while true; do
if [[ "$i" -gt 3 ]]; then
exit 1
fi
echo i: $i
((i++))
done
La desventaja de usar estos operadores es que la variable solo puede incrementarse o decrementarse en 1
.
Conclusión #
Las variables incrementales y decrecientes en Bash se pueden realizar de muchas maneras diferentes. Sea cual sea el método que utilice, el resultado es el mismo.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.