Úvod do Bash skriptování
Alex Scriven
Data Scientist
Čí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ě!
Čísla nejsou nativně podporována:
(V terminálu)
1 + 4
bash: 1: command not found
expr je užitečný program (stejně jako cat nebo grep)
Toto nyní funguje (v terminálu):
expr 1 + 4
5
Výborně!
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í!
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:

bc lze použít bez otevření kalkulačky pomocí roury:
echo "5 + 7.5" | bc
12.5
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
Numerické proměnné se přiřazují stejně jako řetězcové:
dog_name='Roger' dog_age=6echo "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
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!)
Vzpomínáte na volání shellu v předchozí lekci?
Velice užitečné pro numerické proměnné:
model1=87.65 model2=89.20echo "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í