<Precedenti | Contenuti | Succ.>
Espansione aritmetica
La shell consente di eseguire operazioni aritmetiche per espansione. Questo ci consente di utilizzare il prompt della shell come una calcolatrice:
[io@linuxbox~]$ eco $((2 + 2))
4
[io@linuxbox~]$ eco $((2 + 2))
4
L'espansione aritmetica utilizza la forma:
$((espressione))
where espressione è un'espressione aritmetica composta da valori e operatori aritmetici.
L'espansione aritmetica supporta solo numeri interi (numeri interi, nessun decimale), ma può eseguire un gran numero di operazioni diverse. Ecco alcuni degli operatori supportati:
Tabella 7-1: Operatori aritmetici
Operaar Description
+ Aggiunta
- Sottrazione
* Moltiplicazione
/ Divisione (ma ricorda che, poiché l'espansione supporta solo l'aritmetica intera, i risultati sono interi).
% Modulo, che significa semplicemente "resto".
** elevamento a potenza
Gli spazi non sono significativi nelle espressioni aritmetiche e le espressioni possono essere annidate. Ad esempio, per moltiplicare 5 al quadrato per 3:
[io@linuxbox~]$ eco $(($((5**2)) * 3))
75
[io@linuxbox~]$ eco $(($((5**2)) * 3))
75
Le parentesi singole possono essere utilizzate per raggruppare più sottoespressioni. Con questa tecnica, possiamo riscrivere l'esempio precedente e ottenere lo stesso risultato utilizzando una singola espansione invece di due:
[io@linuxbox~]$ eco $(((5**2) * 3))
75
[io@linuxbox~]$ eco $(((5**2) * 3))
75
Ecco un esempio che utilizza gli operatori di divisione e resto. Nota l'effetto della divisione intera:
[io@linuxbox~]$ echo Cinque diviso due è uguale a $((5/2))
Cinque diviso due è uguale a 2
[io@linuxbox~]$ echo con $((5%2)) rimanente.
con 1 rimasto.
[io@linuxbox~]$ echo Cinque diviso due è uguale a $((5/2))
Cinque diviso due è uguale a 2
[io@linuxbox~]$ echo con $((5%2)) rimanente.
con 1 rimasto.
L'espansione aritmetica è trattata più dettagliatamente nel capitolo 34.