Bash operazioni aritmetiche | Linuxiano.it
Privacy Policy

Bash operazioni aritmetiche

Bash operazioni aritmetiche

Bash (acronimo per bourne again shell) è una shell testuale del progetto GNU utilizzata nei sistemi operativi Unix e Unix-like, specialmente in GNU/Linux e macOS, ma disponibile anche per sistemi Microsoft Windows (vedi ad esempio Cygwin)

Essa è chiamata anche Bourne shell dal nome del suo autore originario Stephen Bourne. L’espansione dell’acronimo bash, Bourne again shell, letteralmente significa un’altra shell Bourne, ma Bourne again ha la stessa pronuncia di born again, cioè rinata creando la definizione finale shell rinata.

Eseguire operazioni aritmetiche in bash non è la stessa cosa usando altri linguaggi di programmazione standard. Uno dei limiti di bash è che non può gestire numeri,numeri doppi e virgole come altri linguaggi di scripting.  Per risolvere questo problema useremo un altro strumento di comando.

Esempio: 1: utilizzo del comando ‘expr’

Il comando più vecchio per eseguire operazioni aritmetiche in bash è ‘ expr ‘. Questo comando può funzionare solo con valori interi e stampa l’output direttamente nel terminale. È necessario utilizzare lo spazio quando usiamo il comando ‘expr‘ per eseguire operazioni matematiche. Crea un file bash e aggiungi i vari comandi ‘expr‘ per verificare come funziona il comando ‘expr‘.

#!/bin/bash

# Works as string
expr ’10 + 40′

# Works as string
expr 10+40

#Perform the addition
expr 10 + 40

#Find out the remainder value
expr 90 % 9

#Using expr with backtick
myVal1=`expr 30 / 10`
echo $myVal1

#Using expr within command substitute
myVal2=$( expr 3010 )
echo $myVal2

Salva il file con arith1.sh.

Terminale
  • bash arith1.sh

Produzione:

bash-operazioni-aritmetiche

L’output mostra che gli operatori aritmetici hanno lavorato solo quando lo spazio è utilizzato con ciascun valore numerico e non viene utilizzata alcuna virgoletta con il comando expr . Iinoltre possiamo assegnare l’output del comando expr in una variabile e stamparla in un secondo momento utilizzando backtick o comando sostitutivo.40/10 viene calcolato utilizzando il backtick e il 30-10 viene calcolato utilizzando il comando sostitutivo .

Esempio: 2: utilizzo del comando “let”

let‘ è un altro comando incorporato per eseguire operazioni aritmetiche in bash. Il comando ‘let‘ non può stampare l’output sul terminale senza memorizzare il valore in una variabile. Ma il comando ‘let‘ può essere usato per rimuovere le altre limitazioni del comando ‘expr‘ . Crea un file bash e aggiungi il seguente codice per vedere come funziona il comando ‘let‘.

#!/bin/bash

# Multiplying 9 by 8
let val1=9*3
echo $val1

# Dividing 8 by 3
let “val2 = 8 / 3”
echo $val2

# Subtracting 3 from 9
let val3=93
echo $val3

# Applying increment
let val4=7
let val4++
echo $val4

# Using argument value in arithmetic operation
let “val5=50+$1”
echo $val5

Esegui il file arith2.sh.

Terminale
  • bash arith2.sh

bash-operazioni-aritmetiche

Produzione:

L’output mostra che il comando ‘let‘ è più flessibile del comando ‘expr ‘. Possiamo valutare qualsiasi espressione aritmetica con o senza citazioni. Ma non puoi usare lo spazio all’interno di alcuna espressione matematica. Possiamo utilizzare l’operatore d’ incremento o decremento nel comando ‘let‘ . Come l’operazione aritmetica può essere eseguita con i valori degli argomenti usando il comando ‘let‘ è mostrato nell’ultima parte dell’esempio.

Esempio: 3: utilizzo di doppie parentesi

Possiamo eseguire qualsiasi operazione aritmetica in bash senza utilizzare alcun comando. Qui, le doppie parentesi sono usate per eseguire i compiti aritmetici e usare la doppia parentesi per eseguire espressioni matematiche è più flessibile dei comandi come “expr” o “let” . Creare un file bash e aggiungere il codice seguente per testare le operazioni aritmetiche utilizzando parentesi doppie.

#!/bin/bash

# Calculate the mathematical expression
val1=$((10*5+15))
echo $val1

# Using post or pre increment/decrement operator
((val1++))
echo $val1
val2=41
((–val2))
echo $val2

# Using shorthand operator
(( val2 += 60 ))
echo $val2

# Dividing 40 by 6
(( val3 = 40/6 ))
echo $val3

Esegui il file arith3.sh.

Terminale
  • bash arith3.sh

bash-operazioni-aritmetiche

Produzione:

L’output mostra che le parentesi doppie possono eseguire qualsiasi espressione matematica con spazio o senza spazio e puoi anche utilizzare gli operatori di incremento / decremento e abbreviazione nelle espressioni a parentesi quadre.

Esempio: 4: uso del comando ‘bc’ per numeri mobili o doppi

Uno dei principali limiti dei suddetti modi di fare operazioni aritmetiche in bash è che le espressioni ‘ expr ‘ o ‘let‘ o parentesi quadre non sono in grado di produrre numeri in virgola mobile o doppi. L’output delle operazioni di divisione degli esempi precedenti sono numeri interi. Il comando ‘bc‘ può essere usato per risolvere questo problema e funziona come un calcolatore di base per il sistema operativo Linux. Creare un file bash e aggiungere il seguente codice per verificare l’uso del comando ‘bc’ nelle operazioni aritmetiche.

#!/bin/bash

# Dividing 55 by 3 with bc only
echo “55/3” | bc

# Dividing 55 by 3 with bc and -l option
echo “55/3” | bc -l

# Dividing 55 by 3 with bc and scale value
echo “scale=2; 55/3” | bc

Esegui il file arith4.sh.

Terminale
  • bash arith4.sh

bash-operazioni-aritmetiche

Produzione:

L’output mostra che il semplice comando ‘ bc ‘ produce un valore intero come altre opzioni quando viene eseguita un’espressione di divisione. Il comando ‘ bc -l’ genera l’output esatto della divisione e puoi limitare la parte frazionaria usando il valore di scala . Qui, viene usata la scala = 2 . Quindi l’output mostra 2 cifre dopo il punto decimale.

È possibile applicare uno dei metodi menzionati per eseguire operazioni aritmetiche in bash in base alle proprie esigenze.