BASH – Instrukcja case
: Kompleksowy przewodnik
BASH (Bourne Again Shell) to wszechstronna powłoka wykorzystywana w systemach Linux i Unix, która pozwala na tworzenie skryptów automatyzujących różnorodne zadania. Jednym z kluczowych narzędzi w BASH jest instrukcja case
, która ułatwia obsługę wielu warunków w prosty i czytelny sposób. W tym artykule omówimy, czym jest instrukcja case
, jej składnię oraz pokażemy praktyczne przykłady zastosowań.
Czym jest instrukcja case
?
Instrukcja case
w BASH jest narzędziem, które umożliwia obsługę wielu warunków w bardziej przejrzysty sposób niż wielokrotne użycie instrukcji if...elif
. Jest szczególnie przydatna, gdy mamy do czynienia z wieloma możliwymi wartościami jednej zmiennej.

Składnia instrukcji case
Podstawowa składnia instrukcji case
wygląda następująco:
case zmienna in
wzorzec1)
# kod do wykonania, jeśli zmienna pasuje do wzorca1
;;
wzorzec2)
# kod do wykonania, jeśli zmienna pasuje do wzorca2
;;
*)
# kod do wykonania, jeśli żaden wzorzec nie pasuje (opcjonalne)
;;
esac
Kluczowe elementy:
case
– otwiera instrukcję warunkową.zmienna
– zmienna, której wartość jest porównywana z wzorcami.wzorzec
– wyrażenie, z którym jest porównywana wartość zmiennej.*)
– opcjonalny wzorzec domyślny, wykonywany, gdy żadna wartość nie pasuje.;;
– oznacza koniec bloku kodu dla danego wzorca.esac
– zamyka instrukcjęcase
(odwrotnośćcase
).
Jak działa instrukcja case
?
Instrukcja case
porównuje wartość zmiennej z podanymi wzorcami w kolejności od góry. Jeśli wartość zmiennej pasuje do wzorca, wykonywany jest odpowiadający mu blok kodu. Po zakończeniu bloku kodu następuje wyjście z instrukcji case
.
Przykłady zastosowań instrukcji case
1. Prosty przykład z wyborem
#!/bin/bash
echo "Wybierz opcję:"
echo "1. Informacje o systemie"
echo "2. Lista plików"
echo "3. Wyjście"
read -p "Twój wybór: " opcja
case $opcja in
1)
echo "Informacje o systemie:"
uname -a
;;
2)
echo "Lista plików w bieżącym katalogu:"
ls -l
;;
3)
echo "Do widzenia!"
exit 0
;;
*)
echo "Nieznana opcja, spróbuj ponownie."
;;
esac
2. Obsługa argumentów skryptu
#!/bin/bash
case $1 in
start)
echo "Uruchamianie usługi..."
;;
stop)
echo "Zatrzymywanie usługi..."
;;
restart)
echo "Restartowanie usługi..."
;;
*)
echo "Użycie: $0 {start|stop|restart}"
;;
esac
3. Rozpoznawanie typów plików
#!/bin/bash
read -p "Podaj nazwę pliku: " plik
case $plik in
*.txt)
echo "To jest plik tekstowy."
;;
*.jpg | *.png)
echo "To jest plik graficzny."
;;
*.sh)
echo "To jest skrypt BASH."
;;
*)
echo "Nieznany typ pliku."
;;
esac
4. Użycie case
w pętli
#!/bin/bash
while true; do
echo "Co chcesz zrobić?"
echo "1. Pokaż datę"
echo "2. Pokaż użytkowników"
echo "3. Wyjdź"
read -p "Wybór: " opcja
case $opcja in
1)
date
;;
2)
who
;;
3)
echo "Zamykanie programu."
break
;;
*)
echo "Nieprawidłowy wybór, spróbuj ponownie."
;;
esac
done
Użycie wyrażeń regularnych w case
Wzorce w instrukcji case
obsługują podstawowe wyrażenia regularne. Możemy używać znaków specjalnych, takich jak:
*
– pasuje do dowolnej liczby znaków.?
– pasuje do jednego znaku.[abc]
– pasuje do jednego znaku z zestawu.
Przykład:
#!/bin/bash
read -p "Podaj dzień tygodnia: " dzien
case $dzien in
poniedziałek|wtorek|środa|czwartek|piątek)
echo "To jest dzień roboczy."
;;
sobota|niedziela)
echo "To jest weekend."
;;
*)
echo "Nieznany dzień tygodnia."
;;
esac
Zalety stosowania instrukcji case
- Przejrzystość kodu – w przypadku wielu warunków
case
jest bardziej czytelny niż zagnieżdżone instrukcjeif...elif
. - Elastyczność – umożliwia łatwe porównywanie wartości z różnymi wzorcami.
- Wydajność – instrukcja
case
działa szybciej niż wielokrotne sprawdzanie warunków za pomocąif
.
Częste błędy i jak ich unikać
- Brak znaku
;;
– każdy blok kodu musi być zakończony znakiem;;
.- Nieprawidłowo:
case $opcja in 1) echo "Opcja 1" 2) echo "Opcja 2" esac
- Prawidłowo:
case $opcja in 1) echo "Opcja 1" ;; 2) echo "Opcja 2" ;; esac
- Nieprawidłowo:
- Niepoprawny wzorzec – należy pamiętać, że wzorce w
case
muszą być odpowiednio sformułowane. - Zapomnienie o wzorcu domyślnym
*
– wzorzec domyślny pozwala obsłużyć sytuacje, gdy żadna inna opcja nie pasuje.
Podsumowanie
Instrukcja case
w BASH to potężne narzędzie do obsługi warunków w skryptach. Dzięki swojej prostocie i czytelności jest niezastąpiona w sytuacjach, gdy mamy do czynienia z wieloma możliwymi wartościami zmiennej. Jej elastyczność i możliwość korzystania z wyrażeń regularnych sprawiają, że jest doskonałym wyborem dla programistów i administratorów systemów.
Opanowanie instrukcji case
to krok w stronę bardziej zaawansowanego programowania w BASH i tworzenia skryptów, które są łatwe w utrzymaniu i efektywne w działaniu. Jeśli dopiero zaczynasz swoją przygodę z BASH, warto poświęcić czas na praktykę z tą konstrukcją – szybko przekonasz się, jak bardzo ułatwia ona życie!