Przejdź do głównej zawartości

case


  • case – składnia warunkowa wykorzystywana w bash do wykonywania różnych bloków kodu w zależności od dopasowania wartości do wzorca.
  • Umożliwia uproszczenie złożonych instrukcji warunkowych typu if-elif.
  • Obecna we wszystkich wersjach bash i innych powłokach POSIX-owych.

Okno terminala
case WYRAŻENIE in
WZORZEC1)
KOMENDY ;;
WZORZEC2)
KOMENDY ;;
*)
KOMENDY_DOMYŚLNE ;;
esac
  • case rozpoczyna blok, esac go kończy (odwrócona forma case).
  • Wzorce kończą się średnikiem podwójnym ;;.
  • Można używać wielu wzorców oddzielonych |.

ParametrOpis
WYRAŻENIEZmienna lub tekst dopasowywany do wzorców.
WZORZECWzorzec lub zestaw wzorców, np. `startrun` dopasowuje oba przypadki.
KOMENDYInstrukcje wykonywane, gdy wzorzec pasuje do wartości.
*)Blok domyślny, jeśli żaden wzorzec nie zostanie dopasowany.

Okno terminala
# Przykład 1: Reakcja na argument wywołania skryptu
case "$1" in
start)
echo "Uruchamianie..." ;;
stop)
echo "Zatrzymywanie..." ;;
restart)
echo "Restartowanie..." ;;
*)
echo "Użycie: $0 {start|stop|restart}" ;;
esac
# Przykład 2: Obsługa wielu dni tygodnia
read -p "Podaj dzień tygodnia: " dzien
case "$dzien" in
poniedziałek|wtorek|środa|czwartek|piątek)
echo "Dzień roboczy" ;;
sobota|niedziela)
echo "Weekend" ;;
*)
echo "Nieznany dzień" ;;
esac

  • case działa podobnie do switch/case w innych językach programowania.
  • Wzorce wspierają znaki wieloznaczne (*, ?, []).
  • Może być używany w skryptach interaktywnych i automatyzujących logikę wyboru.

Błąd / KomunikatPrzyczynaRozwiązanie
syntax error near unexpected tokenBrak średnika ;; lub esacUzupełnij poprawną składnię.
Brak działania żadnego blokuŻaden wzorzec nie został dopasowanyUpewnij się, że wartość pasuje do wzorca lub dodaj blok domyślny *).
Niepoprawne dopasowanieBłędna składnia wzorcaSprawdź, czy wzorzec zawiera właściwą składnię globbing.