Jak korzystać z instrukcji Bash Case

Jak korzystać z instrukcji Bash Case

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:

  • Konieczne jest, aby otworzyć oświadczenie za pomocą słowa kluczowego „Case” i zamknięcie go za pomocą słowa kluczowego „ESAC”.
  • Używamy wspornika zamykającego „)”, aby zakończyć wzór.
  • Wzory zawierające polecenia są znane jako klauzule i kończą się „;;”.
  • Możesz użyć „*” (gwiazdka), aby zdefiniować domyślną obudowę.
  • Gdy polecenie Case pasuje do zmiennej wejściowej do zdefiniowanych wzorców, po dopasowaniu odpowiedni zestaw kodu poleceń jest wykonywany do podwójnych półkolisów.
  • Jeśli chcesz wykonać to samo polecenie dla wielu wzorów, możesz użyć operatora rur, aby złożyć wzory jako takie:
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.cii

Widać, ż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.