Dec 312011
 

A volte, nei miei piccoli shell script che faccio, utilizzo un po’ di matematica, di solito niente di troppo complesso, ma è utile fare i conti all’interno dello stesso script bash. Bash è davvero completa e tra le molte funzioni incluse ci sono anche alcune funzioni matematiche.

Utilizzando la sintassi $ ((espressione)) è possibile valutare l’espressione. Operazioni consentite sono un bel po’. Da man bash:

VALUTAZIONE ARITMETICA
La shell permette di calcolare espressioni aritmetiche, sotto certe circostanze . Il calcolo viene fatta usando interi a larghezza fissa, senza controllo di supero della capacità, sebbene la divisione per 0 sia intercettata e segnalata come errore. Gli operatori e la loro precedenza, associatività e valori, sono gli stessi del linguaggio C.



La seguente lista di operatori è raggruppata per operatori di uguale livello di precedenza. I livelli
sono elencati in ordine di precedenza decrescente.

       id++ id--
              post-incremento e post-decremento di una variabile
       ++id --id
              pre-incremento e pre-decremento di una variabile
       - +    meno e più unari
       ! ~    negazione logica e "bit a bit"
       **     elevamento a potenza
       * / %  moltiplicazione, divisione, modulo
       + -    addizione, sottrazione
       << >>  scorrimento "bit a bit" a sinistra e a destra
       <= >= < >    confronto
       == !=  uguaglianza e differenza
       &      AND "bit a bit"
       ^      OR esclusivo "bit a bit"
       |      OR "bit a bit"
       &&     AND logico
       ||     OR logico
       expr?expr:expr          operatore condizionale
       = *= /= %= += -= <<= >>= &= ^= |=         assegnamento
       expr1 , expr2              virgola

Le variabili di shell possono essere usate come operandi; l’espansione di parametro è effettuata prima della valutazione
dell’espressione. All’interno di un’espressione, le variabili di shell possono essere referenziate anche per nome senza bisogno di
usare la sintassi di espansione di parametro. Una variabile di shell nulla o rimossa ha valore 0 se referenziata per nome senza
l’uso della sintassi di espansione di parametro. Il valore di una variabile è valutato come un’espressione aritmetica quando è
referenziata, o quando a una variabile a cui è stato dato l’attributo integer con declare -i è stato assegnato un valore. Un val‐
ore nullo viene considerato come 0. Una variabile di shell non ha bisogno essere stata dichiarata intera per poter essere usata in
un’espressione.

Le costanti che iniziano per 0 sono interpretate come numeri ottali. Uno 0x o 0X iniziale si usa per indicare numeri esadecimali.
Altrimenti, i numeri prendono la forma [base#]n, dove base è un numero decimale tra 2 e 64 che definisce la base aritmetica, e n è
un numero espresso in quella base. Se base# è omessa, allora è usata la base 10. Le cifre maggiori di 9 sono rappresentate dalle
lettere minuscole, dalle lettere maiuscole, e da @ e _, in quest’ordine. Se la base è minore o uguale a 36, le lettere minuscole e
maiuscole possono essere usate indifferentemente per rappresentare numeri compresi tra 10 e 35.

Gli operatori sono valutati in ordine di precedenza. Le subespressioni tra parentesi sono valutate prima e possono prevalere sulle
regole di precedenza di cui sopra.


Popular Posts:

Flattr this!

  2 Responses to “Fare calcoli utilizzando bash”

  1. Ah – I didn’t know you could do that! The fact that you can’t seem to evaluate non-integer numbers seems to be a bit of a limitation.
    And I don’t like the way you get an error message returned with every calculation, although that’s more of an aesthetic thing.
    I normally use the Python interactive prompt for quick mathematical operations.

  2. Very informative…

Leave a Reply to Baban Gaigole Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*