Wprowadzenie do skryptów Bash
Alex Scriven
Data Scientist
Liczby nie są wbudowane w powłokę tak jak w większości REPL-i (konsolach), np. R czy Python.
W Pythonie lub R można wpisać:
>>> 1 + 4
5
I otrzymamy oczekiwany wynik!
Liczby nie są natywnie obsługiwane:
(W terminalu)
1 + 4
bash: 1: command not found
expr to przydatny program narzędziowy (podobnie jak cat czy grep).
Teraz to zadziała (w terminalu):
expr 1 + 4
5
Działa!
expr nie obsługuje natywnie liczb dziesiętnych:
(W terminalu)
expr 1 + 2.5
expr: not a decimal number: '2.5'
Nie ma powodów do obaw! (Jest rozwiązanie)
bc (basic calculator) to przydatny program wiersza poleceń.
Można go uruchomić w terminalu i wykonywać obliczenia:

Można używać bc bez otwierania kalkulatora — wystarczy potokowanie:
echo "5 + 7.5" | bc
12.5
bc posiada argument scale określający liczbę miejsc dziesiętnych.
echo "10 / 3" | bc
3
echo "scale=3; 10 / 3" | bc
Znak ; służy do oddzielania „wierszy" w terminalu
3.333
Zmienne numeryczne deklaruje się tak samo jak zmienne tekstowe:
dog_name='Roger' dog_age=6echo "My dog's name is $dog_name and he is $dog_age years old"
Uwaga: dog_age="6" zadziała, ale zmieni wartość na ciąg znaków!
My dog's name is Roger and he is 6 years old
Alternatywna notacja dla zmiennych numerycznych z podwójnymi nawiasami:
expr 5 + 7
echo $((5 + 7))
12
12
Uwaga: ta metoda używa expr, nie bc (brak liczb dziesiętnych!)
Czy pamiętasz wywoływanie powłoki z poprzedniej lekcji?
Bardzo przydatne przy zmiennych numerycznych:
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
Wprowadzenie do skryptów Bash