If-Koubou

Przewodnik dla początkujących w Skrypcie Shell 4: Warunki i instrukcje If-Then

Przewodnik dla początkujących w Skrypcie Shell 4: Warunki i instrukcje If-Then (Jak)

W naszym przewodniku omówiliśmy dość podstawowych zagadnień dotyczących skryptów powłoki, które warto wypróbować. W tym tygodniu odsyłamy do bardziej zabawnych rzeczy, takich jak warunki i instrukcje "jeśli-to".

Jakie są warunki?

W języku potocznym mówimy, że warunki są wymogami, które muszą zostać spełnione, aby coś mogło się wydarzyć. Aby mój laptop mógł łączyć się z Internetem, musi być spełniony szereg warunków, takich jak posiadanie dostawcy Internetu, modemu i / lub routera, mojego laptopa, itd. To całkiem proste, a jeśli którekolwiek tych wymagań nie są spełnione, wynik - mój laptop łączący się z Internetem - nie ma miejsca.

Warunki w zakresie obliczeń działają podobnie. Możemy przetestować, czy łańcuch pasuje do innego ciągu, czy nie pasuje do innego ciągu, czy nawet, jeśli w ogóle istnieje. Podobnie, możemy przetestować argumenty liczbowe, aby sprawdzić, czy jeden jest wielki, 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 CONDITION
następnie
command1
command2

commandn
fi

Jeśli oświadczenia

Przeprowadźmy krótki skrypt testowy, dobrze?

jeśli test $ 1 -gt 2 $
następnie
echo "1 dolar jest większy niż 2 USD"
fi

Zauważysz, że tylko wtedy, gdy warunek jest prawdziwy, skrypt wykona następujące polecenie. W przeciwnym razie instrukcja "if" zostanie zakończona. Jeśli po poleceniu "if" istnieją jakieś komendy, będą one uruchamiane normalnie. Dodałem następujący wiersz na końcu powyższego skryptu, aby to zilustrować:

echo "To jest po instrukcji if"

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

  • -eq: równy
  • -ne: nie równa się
  • -lt: mniej niż
  • -le: mniejszy lub równy
  • -gt: większy niż
  • -ge: większy niż lub równy

Testowanie ciągów

Teraz, jeśli zmienimy pierwszy wiersz naszego skryptu na:

jeśli test 1 $ = 2 $

wtedy warunek sprawdzi, czy oba są równe. Ale tu jest 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.

Teraz, zróbmy kolejną modyfikację:

jeśli test 1 $! = 2 $

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 bardziej opartych na ciągach testów, których możesz użyć:

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

O co jeszcze?

Przyznaję, że tytuł sekcji był zdecydowanie kiepski. Ok, wiemy, jak wykonać polecenie, jeśli test jest prawdziwy, ale co jeśli chcemy wykonać inne polecenie, jeśli jest ono fałszywe? Możemy łatwo połączyć te dwa elementy, dodając sekcję do naszych instrukcji "jeśli-to" - "jeszcze"!

jeśli CONDITION
następnie
command1
command2

commandn
jeszcze
command1
command2

commandn
fi

Zbierzmy prosty skrypt.

Jest wszystko z właściwym wcięciem. Jeśli przyjrzysz się uważnie, zauważysz, że zamiast polecenia testowego użyliśmy nawiasów kwadratowych ([i]). Są one funkcjonalnie ekwiwalentne dla naszych celów, a z wielu powodów częściej widzisz nawiasy kwadratowe, więc użyjemy ich od teraz.

Oto, jak będą wyglądały dane wyjściowe:

To takie proste!

Co mam teraz zrobić?

Teraz, gdy umiesz używać instrukcji "if-then-else", możesz uruchamiać skrypty, które mogą wykonywać testy. Na przykład możesz uruchomić skrypt, który obliczy sumę kontrolną md5 pliku, a następnie porówna go z plikiem pobranym w pliku, aby sprawdzić, czy pasują do siebie.

W przypadku niektórych punktów bonusowych można utworzyć skrypt, który ma pętlę "dla", ale wykorzystuje warunki testowe zamiast czytania linii z pliku listy ...

Przechodzimy do kilku interesujących części w Przewodniku dla początkujących na temat Skrypty powłoki. Jeśli przegapiłeś poprzednie lekcje, oto krótka lista do sprawdzenia:

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

Jeśli stworzyłeś lub użyłeś skryptów, które używają warunków testowania, instrukcji if-then-else i pętli "for", podziel się z nami komentarzami!