Składnia i przykłady instrukcji bash
- 3176
- 1007
- Maria Piwowarczyk
Instrukcja sprawy jest potężnym instrukcją warunkową w BASH, która pozwala przetestować zmienną na liście wartości. Jest to bardziej zwięzła i wydajna alternatywa dla używania wielu instrukcji IF-Then. Wiele razy jest to dobra alternatywa dla stwierdzeń IF-Else. Możesz również użyć go do przetwarzania argumentów wiersza poleceń w skrypcie powłoki.
W tym artykule wprowadzimy Cię do oświadczenia sprawy w Bash i podamy przykłady tego, jak można go użyć w skryptach Bash.
Składnia instrukcji sprawy w Bash
Składnia instrukcji sprawy w Bash jest następująca:
Wyrażenie przypadku w wzorze1) polecenia1 ;; wzór2) polecenia2 ;; wzór3) polecenia3 ;; *) default_commands ;; esac12345678910 | Wyrażenie przypadku w wzorze1) polecenia1 ;; wzór2) polecenia2 ;; wzór3) polecenia3 ;; *) default_commands ;; esac |
Słowo kluczowe przypadku wskazuje na początek instrukcji przypadku, a słowo kluczowe oddziela wyrażenie, które należy przetestować od listy wzorców. Każdy wzór jest zamknięty w nawiasach, a następnie lista poleceń, które należy wykonać, jeśli wzór pasuje do wyrażenia. Podwójny półkolis (;;)
Wskazuje koniec każdej listy poleceń. *)
Wzór pasuje do dowolnego wyrażenia, które nie pasuje do żadnego z poprzednich wzorców, a w takim przypadku wykonywane są Default_Commands.
Korzystanie z instrukcji spraw w Bash
Oświadczenie o przypadku w BASH jest szczególnie przydatne, gdy chcesz porównać zmienną z listą możliwych wartości. Oto przykład pokazujący, w jaki sposób możesz użyć instrukcji Case, aby sprawdzić wartość zmiennej środowiska użytkownika:
case $ użytkownik w root) echo „Jesteś zalogowany jako root.„; ;; Ubuntu) echo” jesteś zalogowany jako Ubuntu.";; *) echo" jesteś zalogowany jako nieznany użytkownik.";; esac12345678 | case $ użytkownik w root) echo „Jesteś zalogowany jako root.„; ;; Ubuntu) echo” jesteś zalogowany jako Ubuntu.";; *) echo" jesteś zalogowany jako nieznany użytkownik.";; esac |
W tym przykładzie testowane wyrażenie to wartość $ Użytkownik Zmienna środowiskowa. Wzory to możliwe wartości $ Użytkownik (root i ubuntu), a domyślnym wzorem jest *)
Wzór, który pasuje do dowolnej wartości, która nie jest rootem ani ubuntu.
Instrukcja sprawy z argumentami wiersza poleceń
Możesz także użyć instrukcji Case, aby przetwarzać argumenty wiersza poleceń w skrypcie BASH. Oto przykład, który pokazuje, jak korzystać z instrukcji Case, aby obsłużyć różne opcje wiersza poleceń:
podczas gdy getopts „a: b: c:” opt; czy case $ opt w a) echo „Opcja A została przekazana z argumentem $ optarg” ;; b) Echo „Opcja B została przekazana argumentem $ optarg” ;; c) Echo „Opcja C została przekazana argumentem $ optarg” ;; *) echo „nieprawidłowa opcja: -$ optarg” ;; ESAC gotowe123456789101112 | podczas gdy getopts „a: b: c:” opt; czy case $ opt w a) echo „Opcja A została przekazana z argumentem $ optarg” ;; b) Echo „Opcja B została przekazana argumentem $ optarg” ;; c) Echo „Opcja C została przekazana argumentem $ optarg” ;; *) echo „nieprawidłowa opcja: -$ optarg” ;; esacdone |
W tym przykładzie getopts Polecenie służy do przetwarzania opcji wiersza poleceń. Instrukcja przypadku służy do obsługi każdej opcji (A, B i C), a jej odpowiedni argument. Domyślny wzór (*)
służy do obsługi wszelkich nieprawidłowych opcji.
Oświadczenie o wyrażeniu regularnym
Wyrażenia regularne zastosowane w instrukcji sprawy są zamknięte w kwadratowych nawiasach ([])
. Jest tak, ponieważ używamy klas postaci, aby dopasować różne typy znaków. +
Znak po użyciu drugiego wzoru do dopasowania jednego lub więcej wystąpień poprzedniego wzoru (w tym przypadku małe litery). Wyrażenia regularne mogą być dość złożone, a istnieje wiele innych funkcji i opcji, których można użyć w Bash, aby dopasować wzory.
Oto przykład, w jaki sposób możesz używać wyrażeń regularnych z instrukcją sprawy w Bash:
#!/bin/bash read -p "Wprowadź ciąg:" strIt case $ str in [a-z] [0-9]) echo "Ciąg zaczyna się od małej litery i kończy się liczbą.„; ;; [a-z] [a-z]+) echo” ciągu zaczyna się od wielkiej litery, a następnie małe litery.„;;; [0-9]+) echo” ciąg zawiera tylko liczby.„;; *) echo” ciąg nie pasuje do żadnego z wzorów.";; esac123456789101112131415161718 | #!/bin/bash read -p "Wprowadź ciąg:" strIt case $ str in [a-z] [0-9]) echo "Ciąg zaczyna się od małej litery i kończy się liczbą.„; ;; [a-z] [a-z]+) echo” ciągu zaczyna się od wielkiej litery, a następnie małe litery.„;;; [0-9]+) echo” ciąg zawiera tylko liczby.„;; *) echo” ciąg nie pasuje do żadnego z wzorów.";; esac |
W tym przykładzie używamy wyrażeń regularnych, aby dopasować różne wzorce strun. Pierwszy wzór pasuje do ciągów, które zaczynają się od małej litery i kończą się liczbą, taką jak A1, B2 i tak dalej. Drugi wzór pasuje do ciągów, które zaczynają się od wielkiej litery, a następnie jedna lub więcej małych liter, takich jak Hello, World i tak dalej. Trzeci wzór pasuje do ciągów zawierających tylko liczby, takie jak 123, 4567 i tak dalej. Domyślny wzór pasuje do dowolnego ciągu, który nie pasuje do żadnego z poprzednich wzorów.
Po uruchomieniu skryptu zachęca użytkownika do wprowadzenia ciągu. String jest następnie testowany na różnych wzorach za pomocą instrukcji sprawy. Jeśli wzór pasuje, wyświetlany jest odpowiedni komunikat. Jeśli żaden z wzorów nie pasuje, wyświetlany jest domyślny komunikat.
Wniosek
Instrukcja przypadku w BASH jest potężną i wydajną alternatywą dla używania wielu instrukcji IF-Then. Pozwala przetestować zmienną na liście możliwych wartości i wykonać różne polecenia na podstawie wzorca dopasowania. Instrukcja sprawy jest szczególnie przydatna, gdy chcesz przetworzyć argumenty wiersza poleceń lub porównać zmienną z listą możliwych wartości. Korzystając z instrukcji sprawy, możesz napisać bardziej zwięzły i czytelny
- « Jak zmienić domyślną ścieżkę danych MongoDB w Linux
- Jak skopiować tabelę partycji GPT na inny dysk za pomocą SGDisk »