Una delle operazioni aritmetiche più comuni durante la scrittura di script Bash è l'incremento e il decremento delle variabili. Questo è spesso usato nei loop come contatore, ma può verificarsi anche altrove nello script.
Aumentare e decrementare significa aggiungere o sottrarre un valore (di solito 1
), rispettivamente, dal valore di una variabile numerica. L'espansione aritmetica può essere eseguita utilizzando le doppie parentesi ((...))
e $((...))
o con il let
comando integrato.
In Bash, ci sono diversi modi per incrementare/decrementare una variabile. Questo articolo ne spiega alcuni.
Utilizzo di +
e -
Operatori #
Il modo più semplice per incrementare/decrementare una variabile è usare il +
e -
operatori.
i=$((i+1))
((i=i+1))
let "i=i+1"
i=$((i-1))
((i=i-1))
let "i=i-1"
Questo metodo ti consente di incrementare/decrementare la variabile di qualsiasi valore desideri.
Ecco un esempio di incremento di una variabile all'interno di un until
ciclo:
i=0
until [ $i -gt 3 ]
do
echo i: $i
((i=i+1))
done
i: 0
i: 1
i: 2
i: 3
Il +=
e -=
Operatori #
Oltre agli operatori di base spiegati sopra, bash fornisce anche gli operatori di assegnazione +=
e -=
. Questi operatori vengono utilizzati per incrementare/decrementare il valore dell'operando sinistro con il valore specificato dopo l'operatore.
((i+=1))
let "i+=1"
((i-=1))
let "i-=1"
Di seguito while
loop, stiamo decrementando il valore di i
variabile per 5
.
i=20
while [ $i -ge 5 ]
do
echo Number: $i
let "i-=5"
done
Number: 20
Number: 15
Number: 10
Number: 5
Utilizzo di ++
e --
Operatori #
Il ++
e --
gli operatori incrementano e decrementano, rispettivamente, il suo operando di 1
e restituire il valore.
((i++))
((++i))
let "i++"
let "++i"
((i--))
((--i))
let "i--"
let "--i"
Gli operatori possono essere utilizzati prima o dopo l'operando. Sono anche conosciuti come:
- incremento del prefisso:
++i
- decremento del prefisso:
--i
- incremento postfisso:
i++
- Decremento suffisso:
i--
Gli operatori del prefisso prima incrementano/decrementano gli operatori di 1
e quindi restituire il nuovo valore degli operatori. D'altra parte, gli operatori suffisso restituiscono il valore degli operatori prima che sia stato incrementato/decrementato.
Se vuoi solo incrementare/decrementare la variabile, non c'è differenza se usi l'operatore prefisso o suffisso. Fa la differenza solo se il risultato degli operatori viene utilizzato in qualche altra operazione o assegnato a un'altra variabile.
Gli esempi seguenti mostrano come il ++
operatore funziona quando viene utilizzato prima e dopo il suo 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
Di seguito è riportato un esempio di come utilizzare il postfix incrementar in uno script bash:
#!/bin/bash
i=0
while true; do
if [[ "$i" -gt 3 ]]; then
exit 1
fi
echo i: $i
((i++))
done
Lo svantaggio dell'utilizzo di questi operatori è che la variabile può essere incrementata o decrementata solo di 1
.
Conclusione #
L'incremento e il decremento delle variabili in Bash possono essere eseguiti in molti modi diversi. Qualunque sia il metodo che utilizzi, il risultato è lo stesso.
Se hai domande o feedback, sentiti libero di lasciare un commento.