W tym temacie omówimy podstawy instrukcji case i sposoby ich wykorzystania w skryptach Bash.
Instrukcja case Bash jest najprostszą formą JEŻELI-TO-ELSE z wieloma elementami ELIF. Użycie instrukcji case sprawia, że nasz skrypt bash jest bardziej czytelny i łatwiejszy w utrzymaniu. Są one powszechnie stosowane w celu uproszczenia złożonych warunków z wieloma różnymi możliwościami wyboru.
Instrukcja case Bash ma podobną logikę jak instrukcja switch w JavaScript lub C. Istnieje niewielka różnica, jak następuje:
- Instrukcja case Bash pobiera wartość raz i testuje tę wartość wielokrotnie. Przestaje szukać wzorca po jego znalezieniu i wykonaniu powiązanej z nim instrukcji, co jest niemal odwrotne w przypadku instrukcji switch w języku C.
Składnia opisu przypadku
Składnia instrukcji case bash jest podana poniżej:
case expression in pattern_1) statements ;; pattern_2) statements ;; pattern_3|pattern_4|pattern_5) statements ;; pattern-n) statements ;; *) statements ;; esac
Istnieje kilka kluczowych punktów instrukcji case bash:
- Każda instrukcja case w bashu zaczyna się od słowa kluczowego „case”, po którym następuje wyrażenie case i słowo kluczowe „in”. Opis przypadku zamykany jest słowem kluczowym „esac”.
- Możemy zastosować wiele wzorów oddzielonych znakiem | operator. Operator ) wskazuje zakończenie listy wzorców.
- Wzorzec zawierający instrukcje nazywany jest klauzulą i musi być zakończony podwójnym średnikiem (;;).
- Symbol gwiazdki (*) jest używany jako ostateczny wzór definiujący domyślny przypadek. Jest używany jako przypadek domyślny, gdy jest używany jako ostatni przypadek.
Jak to działa
Po pierwsze, instrukcja case rozwija wyrażenie i stara się dopasować do każdego z zawartych wzorców. Po znalezieniu dopasowania wszystkie połączone instrukcje są wykonywane aż do podwójnego średnika (;;). Po pierwszym dopasowaniu sprawa kończy się statusem wyjścia ostatniej wykonanej instrukcji.
Jeśli nie ma pasującego wzorca, status wyjścia sprawy wynosi zero. W przeciwnym razie status powrotu jest statusem wyjścia wykonanych instrukcji.
Jeśli zostanie użyty domyślny wzór gwiazdki, zostanie on wykonany w przypadku braku pasującego wzorca.
Spróbujmy zrozumieć ten mechanizm na kilku przykładach:
Przykład 1
W tym przykładzie zdefiniowaliśmy prosty scenariusz demonstrujący użycie instrukcji case.
Skrypt Basha
#!/bin/bash echo 'Do you know Java Programming?' read -p 'Yes/No? :' Answer case $Answer in Yes|yes|y|Y) echo 'That's amazing.' echo ;; No|no|N|n) echo 'It's easy. Let's start learning from javatpoint.' ;; esac
Wyjście
Przykład 2
W tym przykładzie zdefiniowaliśmy scenariusz łączony, w którym występuje również przypadek domyślny, gdy nie znaleziono żadnego wcześniej dopasowanego przypadku.
Dołącz ciąg Java
Skrypt Basha
#!/bin/bash echo 'Which Operating System are you using?' echo 'Windows, Android, Chrome, Linux, Others?' read -p 'Type your OS Name:' OS case $OS in Windows|windows) echo 'That's common. You should try something new.' echo ;; Android|android) echo 'This is my favorite. It has lots of applications.' echo ;; Chrome|chrome) echo 'Cool!!! It's for pro users. Amazing Choice.' echo ;; Linux|linux) echo 'You might be serious about security!!' echo ;; *) echo 'Sounds interesting. I will try that.' echo ;; esac
Wyjście
Uruchomiliśmy skrypt z trzema różnymi danymi wejściowymi. Sprawdź wynik poniżej: