Numerické proměnné v Bashi

Úvod do Bash skriptování

Alex Scriven

Data Scientist

Čísla v jiných jazycích

Čísla nejsou v shellu nativně podporována jako ve většině REPL prostředí (konzolí), jako jsou R nebo Python.

V Pythonu nebo R lze napsat:

>>> 1 + 4
5

Výsledek se vrátí okamžitě!

Úvod do Bash skriptování

Čísla v shellu

 

Čísla nejsou nativně podporována:

(V terminálu)

1 + 4
bash: 1: command not found
Úvod do Bash skriptování

Představení expr

 

expr je užitečný program (stejně jako cat nebo grep)

Toto nyní funguje (v terminálu):

expr 1 + 4
5

Výborně!

Úvod do Bash skriptování

Omezení expr

expr nativně nepracuje s desetinnými místy:

(V terminálu)

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

Nevadí – existuje řešení!

Úvod do Bash skriptování

Představení bc

bc (základní kalkulačka) je užitečný program příkazové řádky.

Můžete jej spustit v terminálu a provádět výpočty:

Použití programu BC v shellu

Úvod do Bash skriptování

Předávání čísel do bc

 

bc lze použít bez otevření kalkulačky pomocí roury:

echo "5 + 7.5" | bc
12.5
Úvod do Bash skriptování

Argument scale v bc

bc má také argument scale pro počet desetinných míst.

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

Poznámka: ; odděluje „řádky" v terminálu

3.333
Úvod do Bash skriptování

Čísla v Bash skriptech

Numerické proměnné se přiřazují stejně jako řetězcové:

dog_name='Roger'
dog_age=6

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

Pozor: dog_age="6" funguje, ale proměnná bude řetězec!

My dog's name is Roger and he is 6 years old
Úvod do Bash skriptování

Zápis s dvojitými závorkami

Alternativní zápis pro numerické proměnné pomocí dvojitých závorek:

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

Pozor: tato metoda používá expr, nikoli bc (bez desetinných míst!)

Úvod do Bash skriptování

Shell v shellu – znovu

Vzpomínáte na volání shellu v předchozí lekci?

Velice užitečné pro numerické proměnné:

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
Úvod do Bash skriptování

Let's practice!

Úvod do Bash skriptování

Preparing Video For Download...