Numeriska variabler i Bash

Introduktion till Bash-skriptning

Alex Scriven

Data Scientist

Tal i andra språk

Tal är inte inbyggda i skalet på samma sätt som i de flesta REPL-miljöer (konsol) som R och Python

I Python eller R kan du skriva:

>>> 1 + 4
5

Det ger det förväntade resultatet!

Introduktion till Bash-skriptning

Tal i skalet

 

Tal stöds inte nativt:

(I terminalen)

1 + 4
bash: 1: command not found
Introduktion till Bash-skriptning

Introduktion till expr

 

expr är ett användbart verktyg (precis som cat eller grep)

Detta fungerar nu (i terminalen):

expr 1 + 4
5

Smidigt!

Introduktion till Bash-skriptning

Begränsningar i expr

expr hanterar inte decimaltal nativt:

(I terminalen)

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

Men det finns en lösning!

Introduktion till Bash-skriptning

Introduktion till bc

bc (basic calculator) är ett användbart kommandoradsprogram.

Du kan öppna det i terminalen och utföra beräkningar:

Använda bc-programmet i skalet

Introduktion till Bash-skriptning

Skicka tal till bc

 

Du kan använda bc utan att öppna kalkylatorn genom att använda pipe:

echo "5 + 7.5" | bc
12.5
Introduktion till Bash-skriptning

bc:s scale-argument

bc har också ett scale-argument för antal decimaler.

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

Observera att ; används för att separera "rader" i terminalen

3.333
Introduktion till Bash-skriptning

Tal i Bash-skript

Numeriska variabler tilldelas på samma sätt som strängvariabler:

dog_name='Roger'
dog_age=6

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

Observera att dog_age="6" fungerar, men gör det till en sträng!

My dog's name is Roger and he is 6 years old
Introduktion till Bash-skriptning

Dubbelparentesnotation

En variant på enkelparentesnotation för numeriska variabler:

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

Observera att den här metoden använder expr, inte bc (inga decimaler!)

Introduktion till Bash-skriptning

Skal i skal – återbesökt

Minns du hur vi anropade skalet i föregående lektion?

Det är mycket användbart för numeriska variabler:

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
Introduktion till Bash-skriptning

Nu kör vi en övning!

Introduktion till Bash-skriptning

Preparing Video For Download...