Skip to content

Przewodnik dla początkujących do skryptów powłoki 4: Warunki i instrukcje jeśli-to

1 de sierpień de 2021
banner 017

W naszym przewodniku dotyczącym skryptów powłoki omówiliśmy wystarczająco dużo podstaw, abyś mógł swobodnie eksperymentować. W tym tygodniu zajmiemy się niektórymi z bardziej zabawnych rzeczy, takich jak warunki i stwierdzenia „jeśli-to”.

Jakie są warunki?

W języku potocznym mówimy, że warunki to wymagania, które muszą być spełnione, aby coś się wydarzyło. Aby mój laptop mógł łączyć się z Internetem, musi być spełnionych kilka warunków, takich jak posiadanie dostawcy usług internetowych, włączony modem i/lub router, włączony laptop itp. To całkiem proste i jeśli w ogóle są. z tych wymagań nie są spełnione, rezultat – mój laptop łączący się z internetem – nie ma miejsca.

Podobnie działają warunki w dziedzinie informatyki. Możemy sprawdzić, czy ciąg pasuje do innego ciągu, czy nie pasuje do innego ciągu, a nawet czy w ogóle istnieje. Podobnie możemy testować argumenty liczbowe, aby sprawdzić, czy jeden jest lepszy, mniejszy lub równy drugiemu. Aby coś się wydarzyło po spełnieniu warunków testu, używamy instrukcji „jeśli-to”. Ich format jest dość prosty.

jeśli WARUNEK
następnie
polecenie1
polecenie2

polecenie
fi

Jeśli Oświadczenia

Uruchommy krótki skrypt testowy, dobrze?

jeśli test $1 – gt $2
następnie
echo „$1 jest większe niż $2”
fi

test gt

Zauważysz, że tylko wtedy, gdy ten warunek jest spełniony, skrypt wykona następujące polecenie. W przeciwnym razie instrukcja „if” zakończy działanie. Jeśli po poleceniu „if” są jakieś polecenia, zostaną one uruchomione normalnie. Dodałem następujący wiersz na końcu naszego skryptu, aby to zilustrować:

echo „To następuje po instrukcji if”

polecenie post-jeśli

Oto kilka innych operatorów liczbowych, które możesz wypróbować:

  • -eq: równe
  • -ne: nie równe
  • -lt: mniej niż
  • -le: mniejsze lub równe
  • -gt: większe niż
  • -ge: większe lub równe

Ciągi testowe

Teraz, jeśli zmodyfikujemy pierwszą linię naszego skryptu tak, aby wyglądała tak:

jeśli test $1 = $2


wtedy warunek sprawdzi, czy oba są równe. Jest tu jednak haczyk!! Użycie znaku równości (=) porównuje dwa ciągi, a nie liczby. Jeśli chcesz porównać liczby, musisz użyć operatora „-eq”, podobnie jak użyliśmy „-gt” powyżej.

porównywanie ciągów

Teraz zróbmy kolejną modyfikację:

jeśli test $1 != $2

błędnie porównując ciągi

Włączenie wykrzyknika (!) działa jak modyfikator „nie”. Oznacza to, że uruchamia następujące polecenie tylko wtedy, gdy dwa ciągi nie pasują do siebie.

Oto lista kilku testów opartych na ciągach znaków, których możesz użyć:

  • string: użycie samego argumentu sprawdza, czy łańcuch nie jest pusty (null) lub nie jest w jakiś sposób zdefiniowany
  • -n ciąg: sprawdzi, czy ciąg nie jest pusty i jest zdefiniowany
  • -z ciąg: sprawdzi, czy ciąg jest pusty i jest zdefiniowany w ten sposób

Co jeszcze z jeśli?

Przyznam, że ten tytuł sekcji był zdecydowanie kiepską grą słów. Dobrze, wiemy jak wykonać polecenie, jeśli test jest prawdziwy, ale co, jeśli chcemy wykonać inne polecenie, jeśli jest fałszywe? Możemy łatwo połączyć te dwa elementy, dodając sekcję do naszych stwierdzeń „jeśli-to” – „inaczej”!

jeśli WARUNEK
następnie
polecenie1
polecenie2

polecenie
w przeciwnym razie
polecenie1
polecenie2

polecenie
fi

Stwórzmy prosty skrypt.

1627829159 510 Przewodnik dla poczatkujacych do skryptow powloki 4 Warunki i instrukcje

Jest wszystko z odpowiednim wcięciem. Jeśli przyjrzysz się uważnie, zauważysz, że użyliśmy nawiasów kwadratowych ( [ and ] ) zamiast polecenia testowego. Dla naszych celów są one funkcjonalnie równoważne i z różnych powodów znacznie częściej zobaczysz nawiasy kwadratowe, więc będziemy ich używać od teraz.

Oto jak będzie wyglądał wynik:

ifthenelse test

To takie proste!

Co mam teraz zrobić?

Teraz, gdy wiesz, jak używać instrukcji „jeśli-to-inaczej”, możesz uruchamiać skrypty, które mogą wykonywać testy. Na przykład możesz uruchomić skrypt, który obliczy skrót md5 pliku, a następnie porówna go z tym, który pobrałeś w pliku, aby sprawdzić, czy pasują.


Aby uzyskać dodatkowe punkty, możesz utworzyć skrypt, który ma pętlę „for”, ale używa warunków testowych zamiast odczytywać wiersze z pliku listy…

Przechodzimy do niektórych z bardziej interesujących części naszego Przewodnika dla początkujących do skryptów powłoki. Jeśli przegapiłeś poprzednie lekcje, oto krótka lista do sprawdzenia:

  1. Podstawy skryptów powłoki
  2. Korzystanie z pętli
  3. Więcej podstawowych poleceń
  4. Jakie są różnice między powłokami Linuksa?
  5. Jak używać podstawowych wyrażeń regularnych

Jeśli stworzyłeś lub używałeś skryptów, które wykorzystują warunki testowania, instrukcje „jeśli to inaczej” i pętle „for”, podziel się z nami w komentarzach!

Czy ten post był pomocny?