Introduzione
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.
Incrementare e decrementare significa aggiungere o sottrarre un valore (di solito 1
), rispettivamente, dal valore di una variabile numerica. L'espansione aritmetica può essere eseguita usando le doppie parentesi ((...))
e $((...))
o con il comando incorporato let
.
In Bash, ci sono diversi modi per incrementare/decrementare una variabile. Questo articolo spiega alcuni di essi.
Utilizzo degli operatori + e -
Il modo più semplice per increment/decrement una variabile è usando gli operatori +
e -
.
i=$((i+1))
((i=i+1))
let "i=i+1"
i=$((i-1))
((i=i-1))
let "i=i-1"
Questo metodo consente di incrementare e decrementare la variabile di qualsiasi valore desiderato.
Ecco un esempio di incremento di una variabile all'interno di un ciclo until
:
i=0
until [ $i -gt 3 ]
do
echo i: $i
((i=i+1))
done
i: 0
i: 1
i: 2
i: 3
Gli operatori += e -=
Oltre agli operatori di base spiegati sopra, bash fornisce anche gli operatori di assegnazione +=
e -=
. Questi operatori vengono utilizzati per incrementare e decrementare il valore dell'operando di sinistra con il valore specificato dopo l'operatore.
((i+=1))
let "i+=1"
((i-=1))
let "i-=1"
Nel loop while
seguente stiamo diminuendo il valore della variabile i
di 5
.
i=20
while [ $i -ge 5 ]
do
echo Number: $i
let "i-=5"
done
Number: 20
Number: 15
Number: 10
Number: 5
Utilizzo degli operatori ++ e --
Gli operatori ++
e --
incrementano e diminuiscono, rispettivamente, il suo operando di 1
e restituiscono 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 prefisso:
++i
- decremento prefisso:
--i
- incremento postfisso:
i++
- decremento postfisso:
i--
Gli operatori prefisso prima aumentano / diminuiscono gli operatori di 1
e quindi restituiscono il nuovo valore degli operatori. D'altra parte, gli operatori postfix restituiscono il valore degli operatori prima che sia stato incrementato / decrementato.
Se si desidera solo incrementare / decrementare la variabile, non vi è alcuna differenza se si utilizza l'operatore prefisso o postfisso. Fa la differenza solo se il risultato degli operatori viene utilizzato in un'altra operazione o assegnato a un'altra variabile.
Gli esempi seguenti mostrano come funziona l'operatore ++
quando viene utilizzato prima e dopo il suo operatore:
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 l'incremento postfix 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 solo incrementata o decrementata 1
.
Conclusione
Le variabili di incremento e decremento in Bash possono essere eseguite in molti modi diversi. Qualunque sia il metodo che usi, il risultato è lo stesso.