BASH – Obliczanie wyrażeń arytmetycznych: Kompleksowy przewodnik
BASH (Bourne Again Shell) to niezwykle potężne narzędzie, które pozwala na wykonywanie zarówno prostych, jak i zaawansowanych operacji w systemach Linux i Unix. Jedną z podstawowych funkcji, jakie oferuje, jest możliwość obliczania wyrażeń arytmetycznych w skryptach powłoki. Dzięki temu możemy łatwo manipulować danymi liczbowymi, co jest przydatne w automatyzacji zadań i analizie danych.
W tym artykule wyjaśnimy, jak w BASH obsługiwać wyrażenia arytmetyczne, pokażemy dostępne metody oraz praktyczne przykłady zastosowań.
Podstawowe sposoby obliczania wyrażeń arytmetycznych w BASH
BASH obsługuje obliczenia arytmetyczne na kilka sposobów. Poniżej omówimy najpopularniejsze metody.

1. Operator let
Polecenie let
umożliwia wykonywanie podstawowych obliczeń arytmetycznych. Jest proste w użyciu i doskonałe do operacji na zmiennych.
Przykład:
#!/bin/bash
# Deklaracja zmiennych
a=10
b=5
# Obliczenia
let suma=a+b
let roznica=a-b
let iloczyn=a*b
let iloraz=a/b
# Wyniki
echo "Suma: $suma"
echo "Różnica: $roznica"
echo "Iloczyn: $iloczyn"
echo "Iloraz: $iloraz"
Zalety let
:
- Prosta składnia.
- Automatyczna obsługa zmiennych liczbowych.
Wadą jest brak bezpośredniego zwracania wartości (działa głównie w kontekście zmiennych).
2. Podstawienie arytmetyczne $(( ... ))
Najczęściej używaną metodą obliczania wyrażeń arytmetycznych w BASH jest podstawienie arytmetyczne z użyciem $(())
. Metoda ta pozwala na wykonywanie operacji w miejscu i bezpośrednie przypisanie wyniku do zmiennej.
Przykład:
#!/bin/bash
# Deklaracja zmiennych
a=20
b=4
# Obliczenia
suma=$((a + b))
roznica=$((a - b))
iloczyn=$((a * b))
iloraz=$((a / b))
modulo=$((a % b))
# Wyniki
echo "Suma: $suma"
echo "Różnica: $roznica"
echo "Iloczyn: $iloczyn"
echo "Iloraz: $iloraz"
echo "Modulo: $modulo"
Zalety:
- Bezpośrednie przypisanie wyniku do zmiennej.
- Obsługuje złożone wyrażenia.
3. Polecenie expr
Polecenie expr
to starsza metoda wykonywania obliczeń arytmetycznych w BASH. Chociaż jest mniej wydajne niż $(( ... ))
lub let
, wciąż znajduje zastosowanie w starszych skryptach.
Przykład:
#!/bin/bash
# Deklaracja zmiennych
a=15
b=3
# Obliczenia
suma=$(expr $a + $b)
roznica=$(expr $a - $b)
iloczyn=$(expr $a \* $b) # Użycie backslash przy mnożeniu
iloraz=$(expr $a / $b)
# Wyniki
echo "Suma: $suma"
echo "Różnica: $roznica"
echo "Iloczyn: $iloczyn"
echo "Iloraz: $iloraz"
Uwaga: Przy mnożeniu należy używać znaku \*
, aby uniknąć błędu interpretacji.
4. Narzędzie bc
– Obsługa obliczeń zmiennoprzecinkowych
BASH natywnie obsługuje tylko liczby całkowite. Do obliczeń na liczbach zmiennoprzecinkowych możemy użyć zewnętrznego narzędzia bc
(Basic Calculator).
Przykład:
#!/bin/bash
# Deklaracja zmiennych
a=10.5
b=2.3
# Obliczenia
suma=$(echo "$a + $b" | bc)
roznica=$(echo "$a - $b" | bc)
iloczyn=$(echo "$a * $b" | bc)
iloraz=$(echo "$a / $b" | bc)
# Wyniki
echo "Suma: $suma"
echo "Różnica: $roznica"
echo "Iloczyn: $iloczyn"
echo "Iloraz: $iloraz"
Zalety bc
:
- Obsługuje liczby zmiennoprzecinkowe.
- Możliwość definiowania precyzji (liczby miejsc po przecinku).
Operatory arytmetyczne w BASH
W BASH możemy używać następujących operatorów:
- Dodawanie:
+
- Odejmowanie:
-
- Mnożenie:
*
- Dzielenie:
/
- Modulo:
%
(reszta z dzielenia) - Inkrementacja:
++
(np.a++
) - Dekrementacja:
--
(np.b--
) - Potęgowanie:
**
(np.$((2 ** 3))
)
Przykłady zaawansowanego wykorzystania
1. Kalkulator w BASH
#!/bin/bash
echo "Podaj dwie liczby:"
read a
read b
echo "Wybierz operację (+, -, *, /):"
read operacja
wynik=$(echo "$a $operacja $b" | bc)
echo "Wynik: $wynik"
2. Pętla z obliczeniami
#!/bin/bash
echo "Obliczanie kwadratów liczb od 1 do 10:"
for i in {1..10}
do
kwadrat=$((i * i))
echo "Kwadrat liczby $i: $kwadrat"
done
Błędy w obliczeniach i jak ich unikać
- Dzielenie przez zero – Dzielenie przez zero spowoduje błąd. Należy zawsze sprawdzać wartość dzielnika:
if [[ $b -eq 0 ]]; then echo "Błąd: dzielenie przez zero!" else iloraz=$((a / b)) fi
- Liczby zmiennoprzecinkowe – Jeśli potrzebujesz pracować z liczbami zmiennoprzecinkowymi, zawsze używaj
bc
. - Nieprawidłowe użycie operatorów – Upewnij się, że stosujesz odpowiednią składnię (np.
\*
w przypadkuexpr
).
Podsumowanie
Obliczanie wyrażeń arytmetycznych w BASH jest kluczową funkcjonalnością, która pozwala na manipulację danymi liczbowymi w skryptach. Dzięki różnym metodom, takim jak let
, $(( ... ))
, expr
czy bc
, możesz dostosować swoje obliczenia do potrzeb. Każda z tych metod ma swoje zalety, a wybór zależy od kontekstu i stopnia skomplikowania operacji.
Dzięki temu przewodnikowi możesz skutecznie wykorzystać potencjał BASH do obliczeń, zarówno tych prostych, jak i bardziej zaawansowanych.