<Precedenti | Contenuti | Succ.>
Aritmetica semplice
Gli operatori aritmetici ordinari sono elencati nella tabella seguente:
Tabella 34-3: Operatori aritmetici
Descrizione dell'operatore
Descrizione dell'operatore
+ Aggiunta
- Sottrazione
* Moltiplicazione
/ Divisione intera
** elevamento a potenza
% Modulo (resto)
La maggior parte di queste sono autoesplicative, ma la divisione intera e il modulo richiedono ulteriori approfondimenti.
Poiché l'aritmetica della shell opera solo su numeri interi, i risultati della divisione sono sempre numeri interi:
[io@linuxbox~]$ eco $(( 5 / 2 ))
2
[io@linuxbox~]$ eco $(( 5 / 2 ))
2
Ciò rende ancora più importante la determinazione del resto in un'operazione di divisione:
[io@linuxbox~]$ eco $(( 5 % 2 ))
1
[io@linuxbox~]$ eco $(( 5 % 2 ))
1
Utilizzando gli operatori di divisione e modulo, possiamo determinare che 5 diviso 2 dà come risultato 2, con resto 1.
Il calcolo del resto è utile nei cicli. Permette di eseguire un'operazione a intervalli specificati durante l'esecuzione del ciclo. Nell'esempio seguente, visualizziamo una riga di numeri, evidenziando ogni multiplo di 5:
#! / Bin / bash
# modulo: dimostra l'operatore modulo per ((i = 0; i <= 20; i = i + 1)); do
resto=$((i % 5))
se ((resto == 0)); allora printf "<%d> " $i
altro
printf "%d " $i
fi fatto
printf "\ n"
#! / Bin / bash
# modulo: dimostra l'operatore modulo per ((i = 0; i <= 20; i = i + 1)); do
resto=$((i % 5))
se ((resto == 0)); allora printf "<%d> " $i
altro
printf "%d " $i
fi fatto
printf "\ n"
Una volta eseguito, il risultato sarà il seguente:
[io@linuxbox~]$ modulo
<0> 1 2 3 4 <5> 6 7 8 9 <10> 11 12 13 14 <15> 16 17 18 19 <20>
[io@linuxbox~]$ modulo
<0> 1 2 3 4 <5> 6 7 8 9 <10> 11 12 13 14 <15> 16 17 18 19 <20>