Introducción
Una de las operaciones aritméticas más comunes al escribir scripts Bash es incrementar y decrementar variables. Esto se usa a menudo en bucles como 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 hacer usando paréntesis dobles ((...))
y $((...))
o con el comando interno let
En Bash, hay varias formas de incrementar /disminuir una variable. Este artículo explica algunos de ellos.
Usando los operadores + y -
La forma más sencilla de incrementar /disminuir una variable es usando los operadores +
y -
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 y disminuir la variable en cualquier valor deseado.
Aquí hay un ejemplo de cómo incrementar una variable dentro de un bucle until
i=0
until [ $i -gt 3 ]
do
echo i: $i
((i=i+1))
done
i: 0
i: 1
i: 2
i: 3
Los operadores + = y - =
Además de los operadores básicos explicados anteriormente, bash también proporciona los operadores de asignación +=
y -=
Estos operadores se utilizan para incrementar y disminuir 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 while
ciclo while estamos disminuyendo el valor de la variable i
en 5
.
i=20
while [ $i -ge 5 ]
do
echo Number: $i
let "i-=5"
done
Number: 20
Number: 15
Number: 10
Number: 5
Usando los operadores ++ y -
Los ++
y --
incrementan y reducen su operando en 1
, respectivamente, y devuelven el valor.
((i++))
((++i))
let "i++"
let "++i"
((i--))
((--i))
let "i--"
let "--i"
Los operadores se pueden utilizar antes o después del operando. También se conocen como:
- incremento de prefijo:
++i
- disminución de prefijo:
--i
- incremento de sufijo:
i++
- disminución de sufijo:
i--
Los operadores de prefijo primero aumentan /disminuyen los operadores en 1
y luego devuelven 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 /disminuir la variable, no hay diferencia entre usar el operador prefijo o sufijo. Solo hace una diferencia si el resultado de los operadores se usa en otra operación o se asigna a otra variable.
Los siguientes ejemplos muestran cómo funciona el ++
cuando se usa antes y después de su operador:
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 incremento 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 se puede incrementar o disminuir 1
.
Conclusión
Las variables de incremento y decremento en Bash se pueden realizar de muchas formas diferentes. Cualquiera que sea el método que utilice, el resultado es el mismo.