Instrukcja przypadku jest zwykle używana w BASH, gdy masz wiele opcji do wyboru. Używanie go zamiast zagnieżdżonych instrukcji IF-Else pomaga w łatwiejszym odczytaniu i utrzymaniu scenariuszy Bash.
Instrukcja Case Bash została zaprojektowana podobnie do instrukcji sprawy z JavaScript i C. W przeciwieństwie do instrukcji przełącznika z C, instrukcja Case Bash przestaje szukać innych dopasowań, gdy tylko znajdzie jeden i wypełnia instrukcje zapisane dla wzoru.
W tym przewodniku wyjaśnimy, w jaki sposób możesz użyć instrukcji Case, używając dwóch przykładów i niektórych scenariuszy w Ubuntu 22.04.
Składnia instrukcji sprawy
Jeśli chcesz zrozumieć, jak korzystać z instrukcji sprawy, musisz zrozumieć składnię. To wygląda tak:
case $ zmienna w
wzór 1)
polecenia
;;
wzór2)
polecenia
;;
wzór)
polecenia
;;
*)
polecenia
;;
esac
Rozbijmy to:
case $ zmienna w
wzór1 | wzór2)
polecenia
;;
wzór3 | wzór4)
polecenia
;;
Teraz spójrzmy na kilka przykładów, aby lepiej zrozumieć tę składnię.
Wakacje w ciągu miesiąca
W naszym pierwszym przykładzie napiszmy skrypt, który zajmuje miesiąc jako wkład od użytkownika i odpowiada międzynarodowymi wakacje, które spada w ciągu miesiąca. „„shopt -s nocasematch”Polecenie pozwala skryptowi zignorować przypadek wejścia i dopasowywanie go do przypadków, niezależnie od tego.
#!/bin/bash
#kod ignorowanie ograniczeń przypadków
shopt -s nocasematch
#oświadczenie
echo „Wprowadź nazwę miesiąca”
Przeczytaj miesiąc
sprawa $ miesiąc w
Styczeń)
Echo „18 stycznia to Narodowy Dzień Tezaurusa”
;;
Luty)
Echo „20 lutego to Światowy Dzień Sprawiedliwości Społecznej”
;;
Marsz)
Echo ”29 marca to mały czerwony dzień wagonu."
;;
Kwiecień)
Echo „1 kwietnia to międzynarodowy dzień walki poduszki”
;;
*)
Echo „Nie można znaleźć żadnych wakacji w określonym miesiącu”
esac
W tym skrypcie bierzemy nazwę miesiąca od użytkownika i przechowujemy ją w zmiennej o nazwie „Miesiąc”. Następnie, korzystając z instrukcji sprawy, porównujemy dane wejściowe z niektórymi wstępnie wybranymi miesiącami, a następnie wyświetlamy odpowiednie wakacje. Możesz zobaczyć, że jeśli kod nie znajdzie żadnego dopasowania w określonych przypadkach, ma echo poza przypadkami, aby wyświetlić inną wiadomość. A potem zamykamy strukturę kodu przypadku za pomocą słowa kluczowego „ESAC”.
Zapisz plik skryptu i wyjdź z nano edytora. Uruchom skrypt za pomocą następującego polecenia:
Miesiąc $ Bash.ciiWidać, że kod odpowiedział odpowiednimi wakacją na wkład, który był zaspokajany z przypadkami, i odpowiedział z nieznanym, gdy wkład był niezgodny z zaprogramowanymi przypadkami.
Język urzędowy kraju
Napiszmy skrypt, który wykorzystuje złożone przypadki. W tym przykładzie napiszmy skrypt, który zabiera kraj i drukuje język urzędowy tego kraju.
#!/bin/bash
#kod ignorowanie ograniczeń przypadków
shopt -s nocasematch
#oświadczenie
echo „Wejdź do kraju:”
Przeczytaj kraj
echo „Język urzędowy $ kraju jest”
sprawa $ kraj w
Ameryka | Londyn)
echo „angielski”
;;
Brazylia | Portugalia | Meksyk)
echo „hiszpański”
;;
Chiny | Singapur | Tajwan)
echo „mandarynki”
;;
*)
Echo „nieznane”
;;
esac
Oświadczenie o liczbach całkowitych
Możesz także utworzyć przypadki, w których musisz również dopasować dane wejściowe do liczb całkowitych. Utwórzmy skrypt, który pobiera dane wejściowe od użytkowników w zakresie 1-10, a następnie wyświetla się, jeśli liczba jest równa lub dziwna.
#!/bin/bash
#oświadczenie
echo „Wprowadź numer od 1 do 10:”
Przeczytaj num
Case $ num in
„1” | „3” | „5” | „7” | „9”)
echo „Twoje dane wejściowe to liczba nieparzysty”
;;
„2” | „4” | „6” | „8” | „10”)
echo „Twoje dane wejściowe jest liczbą parzystą”
;;
*)
echo „Twoje dane wejściowe jest poza wymaganym zakresem”
;;
esac
Uruchomienie tego skryptu daje następujące dane wyjściowe:
Możesz również testować z innymi liczbami.
Oświadczenie o pętli
Możesz użyć instrukcji CASE w ramach pętli, jeśli chcesz sprawdzić wiele wartości wejściowych w stosunku do zestawu zestawu. Zilustrujmy ten przypadek, pisząc skrypt, który przechodzi przez wszystkie pliki w bieżącym katalogu i wyświetlaj ich typ pliku.
#!/bin/bash
#Dla każdego pliku w bieżącym katalogu
dla pliku w $ (ls)
Do
#Extract rozszerzenie pliku
Rozszerzenie = $ plik ##*.
sprawa „$ rozszerzenie” w
cii)
Echo „Plik skryptu Bash: $ plik”
;;
PNG)
Echo „Plik obrazu PNG: plik $”
;;
tekst)
Echo „Plik tekstowy: $ plik”
;;
*)
echo „nieznany plik”
;;
Esac
zrobione
Uruchamianie tego skryptu przechodzi każdy plik w bieżącym Active Directory i wyświetla go wraz z jego typem pliku (tylko określone przypadki). Jak widać, podczas uruchamiania tego skryptu mamy tylko jeden plik w bieżącym katalogu, wyświetla to wraz z rozszerzeniem.
Wniosek
Wrócenie do starszego kodu i zastanowienie się, co robi linia, może być bardzo uciążliwym zadaniem, szczególnie jeśli napisał ją ktoś inny. Dodanie do niego jest jeszcze trudniejsze. Korzystanie z instrukcji Case w skryptach Bash może ułatwić Ci to, że jest to czytelne za pomocą łatwej składni.
Jak pokazano z przykładami, możesz użyć go z strunami, wieloma strunami, liczbami całkowitych i pętli, między innymi. Możesz nawet obsłużyć kody wyjściowe dla swojego programu z instrukcjami przypadków. To jest bardzo wszechstronne.
Jeśli napotykasz jakiekolwiek problemy związane z oświadczeniem sprawy, możesz nas zaangażować, a my z przyjemnością Ci pomożemy.