Variabili numeriche in Bash

Introduzione al Bash Scripting

Alex Scriven

Data Scientist

Numeri in altri linguaggi

I numeri non sono integrati nativamente nella shell come nella maggior parte dei REPL (console) come R e Python

In Python o R puoi fare:

>>> 1 + 4
5

E otterrai subito il risultato!

Introduzione al Bash Scripting

Numeri nella shell

 

I numeri non sono supportati nativamente:

(Nel terminale)

1 + 4
bash: 1: command not found
Introduzione al Bash Scripting

Introduzione a expr

 

expr è un'utilità utile (come cat o grep)

Ora questo funziona (nel terminale):

expr 1 + 4
5

Ottimo!

Introduzione al Bash Scripting

Limiti di expr

expr non gestisce nativamente i decimali:

(Nel terminale)

expr 1 + 2.5
expr: not a decimal number: '2.5'

Niente paura! (C'è una soluzione)

Introduzione al Bash Scripting

Introduzione a bc

bc (basic calculator) è un utile programma da riga di comando.

Puoi avviarlo nel terminale ed eseguire calcoli:

Uso del programma BC nella shell

Introduzione al Bash Scripting

Passare numeri a bc

 

Usare bc senza aprire la calcolatrice è possibile con una pipe:

echo "5 + 7.5" | bc
12.5
Introduzione al Bash Scripting

Argomento scale di bc

bc ha anche l'argomento scale per le cifre decimali.

echo "10 / 3" | bc
3
echo "scale=3; 10 / 3" | bc

Nota l'uso di ; per separare le "righe" nel terminale

3.333
Introduzione al Bash Scripting

Numeri negli script Bash

Possiamo assegnare variabili numeriche come quelle stringa:

dog_name='Roger'
dog_age=6

echo "My dog's name is $dog_name and he is $dog_age years old"

Attenzione: dog_age="6" funziona, ma lo rende una stringa!

My dog's name is Roger and he is 6 years old
Introduzione al Bash Scripting

Notazione con doppie parentesi

Una variante della notazione tra parentesi singole per variabili numeriche:

expr 5 + 7
echo $((5 + 7))
12
12

Attenzione: questo metodo usa expr, non bc (niente decimali!)

Introduzione al Bash Scripting

Shell nella shell, revisione

Ricordi come abbiamo richiamato la shell nella lezione precedente?

Molto utile con variabili numeriche:

model1=87.65
model2=89.20

echo "The total score is $(echo "$model1 + $model2" | bc)"
echo "The average score is $(echo "($model1 + $model2) / 2" | bc)"
The total score is 176.85
The average score is 88
Introduzione al Bash Scripting

Andiamo a praticare!

Introduzione al Bash Scripting

Preparing Video For Download...