Składnia i przykłady instrukcji bash

Składnia i przykłady instrukcji bash

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 ;; esac
12345678910Wyraż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.";; esac
12345678case $ 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 gotowe
123456789101112podczas 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.";; esac
123456789101112131415161718#!/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