Porównywanie strun w Bash A Hass-on Tutorial

Porównywanie strun w Bash A Hass-on Tutorial

Porównywanie stringów jest powszechnym zadaniem podczas pracy z skontaktami powłoki, danych wejściowych użytkownika lub danymi łańcuchowymi. W skorupce może być konieczne sprawdzenie, czy wartość istnieje w innym ciągu, znajdź, czy dwa ciągi mają taką samą długość, test na początek lub koniec słowa, czy jakikolwiek inny rodzaj porównania. Standardowe narzędzia UNIX nie zapewnia wielu opcji porównywania ciągów; Tradycyjne porównanie leksykalne (takie jak sprawdzenie, czy dwa słowa mają tę samą długość i indywidualnie porównywanie każdej postaci) jest trudne do wydajnego wdrożenia w kodzie i nie jest tak cenne dla dynamicznego języka, takiego jak Bash.

W tym artykule wyjaśniono różne sposoby porównywania ciągów w Bash i kilku powiązanych poleceń.

Operatorzy porównywania ciągów

Możemy użyć operatorów porównawczych z BASH, jeśli instrukcje do porównania dwóch ciągów. Oto lista operatorów porównawczych do pracy ze strunami w powładzie bash.

OperatorDetale
[„String1” == „String2”]Zwraca prawdziwie, jeśli oba ciągi są równe.
[„String1” != „String”Zwraca prawdziwie, jeśli oba ciągi nie są równe.
[„String = ~ Regex]Porównaj String1 z wyrażeniem regularnym i zwróć prawdziwe dopasowania
[-z „String”]Zwróć true, jeśli dana długość ciągu wynosi zero (0)
[-n „string”]Zwróć true, jeśli dana długość ciągu nie wynosi zero

Teraz omówimy powyższego operatora porównawczego jeden po drugim z przykładami.

Porównanie dwóch ciągów jest równe?

Jeśli chcesz sprawdzić, czy dwa ciągi są równe, użyj == operator. Operatorzy ci porównują lewy operand z prawym operandem i zwracają prawdziwie, jeśli oba pasują.

Zrozummy z przykładem. W skrypcie powłoki zainicjuj dwie zmienne za pomocą ciągu. Następnie użyj instrukcji IF, aby porównać, czy oba ciągi są równe, czy nie używają == operator.

#!/usr/bin/env bash str1 = "tecadmin" str2 = "tecadmin" if ["$ str1" == "$ str2"], a następnie echo „oba struny są równe„ echo ”Oba struny nie są równe„ fi ”fi
1234567891011#!/usr/bin/env bash str1 = "tecadmin" str2 = "tecadmin" if ["$ str1" == "$ str2"], a następnie echo „oba struny są równe„ echo ”Oba struny nie są równe„ fi ”fi

Uruchom powyższy skrypt powłoki w powładzie bash i sprawdź wyniki.

Wyjście: oba ciągi są równe 

Teraz zmień wartości obu zmiennych za pomocą różnych ciągów. Następnie skrypt i zobacz wyniki.

Sprawdź, czy dwa ciągi nie są równe (!=)

Czasami musimy sprawdzić, czy oba ciągi nie są równe. Możesz użyć != operator do przetestowania, czy dwa ciągi nie są równe. Sprawdźmy z przykładem:

#!/usr/bin/env bash str1 = "tecadmin" str2 = "helloworld" ## Sprawdź, czy oba ciągi nie są równe, jeśli [„$ str1” != „$ Str2”] Następnie echo „true, oba ciągi nie są równe„ else echo ”fałszywe, oba ciągi są równe” FI
123456789101112#!/usr/bin/env bash str1 = "tecadmin" str2 = "helloworld" ## Sprawdź, czy oba ciągi nie są równe [„$ str1” != „$ Str2”] Następnie echo „true, oba ciągi nie są równe„ else echo ”fałszywe, oba ciągi są równe” FI

Uruchom powyższy skrypt powłoki w powładzie bash i sprawdź wyniki.

Wyjście: Prawda, oba ciągi nie są równe 

Porównaj struny z wyrażeniem regularnym

Aby porównać ciągi z wyrażeniami regularnymi w BASH, możesz użyć polecenia „GREP” z opcją „-e” (rozszerzona regex). Polecenie „GREP” przeszukuje ciąg wzoru i zwraca kod wyjścia sukcesu (0), jeśli wzór zostanie znaleziony i kod wyjścia (1), jeśli wzór nie zostanie znaleziony.

Oto przykład użycia polecenia „GREP” do porównania ciągu z wyrażeniem regularnym:

String = „Hello World” If Echo „$ String” | grep -e "^hello"; Następnie Echo „Match Found” Else Echo „Nie znaleziono” FI
123456String = „Hello World” If Echo „$ String” | grep -e "^hello"; Następnie Echo „Match Found” Else Echo „Nie znaleziono” FI

Możemy również porównać ciąg z wyrażeniem regularnym w skryptach bash. Korzystając z porównania ciągów z wyrażeniem regularnym z instrukcją IF, zawsze powinieneś zawierać z [[]] cytaty. Poniższy przykład pokaże pomóc Ci sprawdzić, czy zmienna zawiera ciąg, który zaczyna się od określonego ciągu.

#!/usr/bin/env bash str = "tecadmin", jeśli [["$ str" = ~ ^tec]] Następnie echo „Tak, wyrażenie regularne pasuje do„ else echo ”wyrażenie regularne nie pasuje do” FI
12345678910#!/usr/bin/env bash str = "tecadmin", jeśli [["$ str" = ~ ^tec]] Następnie echo „Tak, wyrażenie regularne pasuje do„ else echo ”wyrażenie regularne nie pasuje do” FI
Wyjście: tak, wyrażenie regularne pasuje do 

Sprawdźmy inny przykład. W tym skrypcie zachęcimy użytkownika do wprowadzenia numeru. Następnie sprawdź, czy wartość wejściowa jest liczbą, czy nie. Kontażu liczbowe cyfry od 0 do 9.

#!/usr/bin/env bash odczyt -p „Wpisz liczbę:” VAR ## Sprawdź, czy wartość wejściowa jest liczbą, jeśli [["$ var" = ~ ^[0-9]+$]], a następnie echo "podano" Wejście to liczba „inaczej echo” przepraszam, dane wejściowe nie jest liczbą „fi”
1234567891011#!/usr/bin/env bash odczyt -p „Wprowadź numer:” VAR ## Sprawdź, czy wartość wejściowa to numerf [["$ var" = ~ ^[0-9]+$]], a następnie echo "Podano Inputput to liczba „else echo” przepraszam, dane wejściowe nie jest liczbą „fi”

Uruchom powyższy skrypt bash i podaj dane wejściowe po wyświetleniu monitu.

Pierwszy uruchomienie: Wejście Liczba: 12 Podane dane wejściowe to liczba 

Ponownie uruchom ten skrypt, ale tym razem wprowadź wartość niewiazową i zobacz wyniki.

Drugi bieg: Wpisz Numer: 1234a Przepraszamy, wejście nie jest liczbą 

Sprawdź, czy ciąg jest pusty

Aby sprawdzić, czy ciąg jest pusty w Bash, możesz użyć następującej składni:

if [-z "$ string"]; wtedy Echo „String jest pusty” Else ”ciąg nie jest pusty” FI
12345if [-z "$ string"]; wtedy Echo „String jest pusty” Else ”ciąg nie jest pusty” FI

„-Z” Operator służy do testowania, czy długość łańcucha wynosi zero. Jeśli długość łańcucha wynosi zero, wyrażenie wewnątrz nawiasów kwadratowych zwraca true, a klauzula „następnie” jest wykonywana. Jeśli długość łańcucha jest większa niż zero, wyrażenie zwraca false, a klauzula „else” jest wykonywana.

Wniosek

Podsumowując, porównywanie ciągów w BASH jest podstawowym aspektem scenariuszy powłoki, który można wykorzystać do podejmowania decyzji, kontrolowania przepływu skryptów i przetwarzania danych. W tym praktycznym samouczku omówiliśmy podstawy porównania strun w BASH, w tym różnych operatorów porównawczych, składni i wspólnych pułapek. Podaliśmy również przykłady i ćwiczenia, które pomogą Ci ćwiczyć i opanować koncepcje przedstawione w tym samouczku. Postępując zgodnie z najlepszymi praktykami opisanymi w tym samouczku, możesz napisać skrypty, które są bardziej niezawodne, niezawodne i wydajne. Niezależnie od tego, czy jesteś początkującym, czy doświadczonym użytkownikiem, porównanie String w Bash jest cenną umiejętnością, która może pomóc w automatyzacji zadań, rozwiązywaniu problemów i w pełni wykorzystania skontleurowców.