Przykład Bash jeśli-to-inaczej

Bash If Then Else Example



W tej lekcji zobaczymy, jak możemy używać instrukcji If-Then-Else w skryptach środowiska Bash, które piszemy. Instrukcje If-Then-Else są użytecznym narzędziem umożliwiającym zdefiniowanie ścieżki działania skryptu po spełnieniu pewnych warunków. Zobaczmy, jaka jest składnia instrukcji If-Then-Else:

JeśliNIEKTÓRE POLECENIA;
następnieWTEDY-POLECENIA;
w przeciwnym razieINNE POLECENIA;
być

W powyższym poleceniu, jeśli okaże się, że NIEKTÓRE-POLECENIA są prawdziwe lub ich status powrotu jest równy 0, wykonane zostaną THEN-COMMANDS. Jeśli tak nie jest, wykonywane są ELSE-COMMANDS. W NIEKTÓRYCH POLECENIACH zwykle wykonujemy porównanie łańcuchów lub porównanie wartości w postaci liczb całkowitych. Możemy również wykonać wiele operacji związanych z plikami. Przyjrzyjmy się przykładowym podstawowym poleceniom, które są używane głównie podczas pracy z warunkami opartymi na plikach:







Podstawowy Oznaczający
[ -do ] Zwraca prawdę, gdy istnieje PLIK.
[-b] Zwraca prawdę, gdy PLIK istnieje i jest specjalnym plikiem blokowym.
[-C] Zwraca prawdę, gdy PLIK istnieje i jest specjalnym plikiem znakowym.
[ -D ] Zwraca prawdę, gdy PLIK istnieje i jest katalogiem.
[ -I ] Zwraca prawdę, gdy istnieje PLIK.
[ -F ] Zwraca prawdę, gdy PLIK istnieje i jest zwykłym plikiem.
[ -g ] Zwraca prawdę, gdy istnieje PLIK i ustawiony jest jego bit SGID.
[ -h ] Zwraca true, gdy PLIK istnieje i jest dowiązaniem symbolicznym.
[-k] Zwraca prawdę, gdy istnieje PLIK i ustawiony jest jego bit lepkości.
[ -P ] Zwraca prawdę, gdy PLIK istnieje i jest potoku nazwanym (FIFO).
[ -r ] Zwraca true, gdy PLIK istnieje i jest czytelny.
[ -s ] Zwraca true, gdy PLIK istnieje i ma rozmiar większy niż zero.
[ -T ] Zwraca true, gdy deskryptor pliku FD jest otwarty i odnosi się do terminala.
[-u] Zwraca true, gdy FILE istnieje i jego bit SUID (ustaw identyfikator użytkownika) jest ustawiony.
[ -w ] Zwraca true, gdy PLIK istnieje i jest zapisywalny.
[-x] Zwraca true, gdy PLIK istnieje i jest wykonywalny.
[-O] Zwraca true, gdy PLIK istnieje i należy do efektywnego identyfikatora użytkownika.
[ -G ] Zwraca true, gdy FILE istnieje i należy do efektywnego identyfikatora grupy.
[ -TEN ] Zwraca true, gdy PLIK istnieje i jest dowiązaniem symbolicznym.
[ -N ] Zwraca prawdę, gdy PLIK istnieje i został zmodyfikowany od czasu ostatniego odczytu.
[ -S ] Zwraca true, gdy PLIK istnieje i jest gniazdem.

THEN-COMMANDS i ELSE-COMMANDS mogą być dowolnymi poprawnymi operacjami UNIX lub dowolnym programem wykonywalnym. Zwróć uwagę, że następnie oraz być polecenia są oddzielone średnikiem, ponieważ są uważane za całkowicie oddzielne elementy skryptu.



Prosty przykład Jeśli-to-inaczej

Zacznijmy naszą lekcję od bardzo prostego przykładu z instrukcjami If-Then-Else.
Oto przykładowy program:



Jeśli przykład

Jeśli przykład





Oto wynik, który widzimy, gdy uruchamiamy nasz skrypt:

$. ifelse1.sh
Wartości są takie same!
$

Korzystanie z argumentów wiersza poleceń

Możemy również użyć argumentów wiersza poleceń w naszych skryptach i użyć liczby argumentów oraz samych wartości jako warunku w definiowanej przez nas instrukcji IF. Najpierw definiujemy plik tekstowy o następującej zawartości:



Nazywam się LinuxHint. Uwielbiam serwery, szczególnie te z Ubuntu. Oni są tak
nieuleczalny!

Teraz możemy napisać skrypt, który sprawdzi, czy słowo występuje w pliku tekstowym, czy nie. Zdefiniujmy teraz skrypt:

wyrzucił „Znajdowanie 1 USD w 2 USD”
chwyt 1 zł 2 zł
Jeśli [ $? -urodzić się 0 ]
następnie
wyrzucił '$1 ​​nie znaleziono w pliku $2.'
w przeciwnym razie
wyrzucił '$1 ​​znaleziono w pliku $2.'
być
wyrzucił „Skrypt ukończony”.

Ten skrypt jest bardzo dynamiczny. Uwzględnia słowo do znalezienia i plik do wyszukania z samego wiersza poleceń. Teraz jesteśmy gotowi do uruchomienia naszego skryptu:

. ifelse2.sh kocham cześć.txt

Zobaczymy wyjście takie jak:

Znalezienie miłościwcześć.txt
miłość znalezionaw plikcześć.txt.
Skrypt ukończony.

Sprawdzanie liczby argumentów wiersza poleceń

Wewnątrz instrukcji IF możemy nawet sprawdzić, ile argumentów wiersza poleceń zostało przekazanych do polecenia, abyśmy mogli działać na tym samym:

liczyć=$ #
Jeśli [ ! $count -gt 1 ]
następnie
wyrzucił „Za mało argumentów”
w przeciwnym razie
wyrzucił 'Dobra robota!'
być

Uruchommy teraz ten skrypt, zobaczymy następujący wynik:

Argumenty wiersza poleceń

Argumenty wiersza poleceń

Stwierdzenia „jeżeli-to-elif-inaczej”

Możemy również mieć wiele instrukcji IF w tym samym bloku, aby zawęzić ścieżkę decyzji, którą nasz program podejmuje, aby wykonać zdefiniowane przez nas polecenia. Oto składnia do definiowania wielu instrukcji IF w naszych skryptach:

JeśliTEST-POLECENIA;
następnie
WYNIK-POLECENIA;
Elifa
INNE POLECENIA;
następnie
KOLEJNE-WYNIKI POLECENIA;
w przeciwnym razie
POLECENIA ALTERNATYWNE;
być

Wygląda to jednak dość znajomo i łatwe do śledzenia. Zdefiniujmy prosty przykład, aby ustalić, jak działa drzewo:

liczyć=$ #
Jeśli [ $count -równe 1 ]
następnie
wyrzucił – Znaleziono tylko jeden argument.
Elifa [ $count -równe 2 ]
następnie
wyrzucił — Lepiej, znaleziono dwa argumenty.
w przeciwnym razie
wyrzucił „Dobra robota, znaleziono wiele argumentów!”
być

Oto, co otrzymujemy z tym poleceniem:

Jeśli to Elif Else przykład

Jeśli to Elif Else przykład

Korzystanie ze stwierdzeń przypadku

Instrukcje JEŻELI-ELSE są przydatne, gdy masz dużą listę opcji, na które musisz się zdecydować. Ale w przypadku, gdy chcesz wykonać akcję tylko w kilku przypadkach dokładnego dopasowania do wyniku, możemy również użyć instrukcji CASE w skryptach Bash. Jego składnia wygląda następująco:

ObudowaWYRAŻENIEwPRZYPADEK 1)POLECENIA DO WYKONANIA;
PRZYPADEK2)POLECENIA DO WYKONANIA;
PRZYPADEK2)POLECENIA DO WYKONANIA;
...)POLECENIA DO WYKONANIA;
*)POLECENIA DO WYKONANIA;
esac

Ostatni przypadek z * działa jako przypadek domyślny i zostanie wykonany, gdy żaden z wyżej zdefiniowanych przypadków nie będzie pasował.

Skonstruujmy szybko prosty przykład za pomocą instrukcji CASE:

Obudowa „1 dolar” w
1)
wyrzucił „Wartość to 1.”
;;
2)
wyrzucił „Wartość to 2.”
;;
3)
wyrzucił „Wartość to 3.”
;;
*)
wyrzucił „Przekazano inną wartość”.
esac

Każda instrukcja CASE jest zakończona znakiem ;; (podwójne znaki średnika). Oto, co otrzymujemy z tym poleceniem:

PRZYPADEK PRZYKŁAD

PRZYPADEK PRZYKŁAD

Wniosek

W tej lekcji przyjrzeliśmy się, w jaki sposób możemy użyć instrukcji IF-ELSE, IF-THEN-ELIF i CASE w zdefiniowanych przez nas skryptach Bash do podejmowania określonych działań na podstawie wartości istniejących w naszych programach lub przekazywanych przez użytkownika za pomocą pozycyjnych parametry.