Używanie instrukcji if…else w Bash do warunkowego wykonywania kodu.
Bash (Bourne Again Shell) to wiersz poleceń powłoki i język skryptowy w systemach operacyjnych GNU/Linux. Jest to domyślna powłoka dla większości dystrybucji Linuksa.
Instrukcje warunkowe są niezbędne w każdym języku programowania, zarówno skompilowanym, jak i skryptowym. Pozwalają użytkownikowi wykonać fragment kodu w oparciu o predefiniowany warunek, który jest jednym z fundamentów logiki programowania. W tym artykule dowiemy się, jak korzystać z Jeśli inaczej
instrukcja warunkowa w Bash.
Wstęp
ten Jeśli inaczej
Instrukcja w Bash pozwala użytkownikowi manipulować przepływem kodu na podstawie warunków. Użytkownik może określić oddzielne bloki kodu do wykonania, z których tylko jeden zostanie ostatecznie wykonany w czasie wykonywania, na podstawie odpowiedniego warunku, który jest spełniony.
Zauważ, że można określić więcej niż dwa warunki, dla których Elifa
można użyć oświadczenia. Użytkownik może podać dowolną liczbę warunków za pomocą Elifa
, a na koniec domyślny warunek przy użyciu w przeciwnym razie
blok. Zobaczmy więcej na ten temat w składni i przykładach poniżej.
Ogólna składnia
Ogólna składnia dla Jeśli inaczej
oświadczenie w Bash to:
Jeśli następnie w przeciwnym razie fi
Tutaj, jeśli spełnia, tj. jeśli zwraca 0 (sukces), to wykonywany jest blok kodu 1. Jeżeli warunek nie zwraca 0, tj. zwraca stan niepowodzenia, to blok kodu 2 jest wykonywany. ten
Jeśli inaczej
blok kończy się na fi
oświadczenie.
Dla wielu bloków odpowiadających wielu warunkom,Elifa
jest używany:
Jeśli następnie Elif w takim razie Elif w takim razie ... ... w przeciwnym razie fi
Tutaj warunki są sprawdzane w kolejności i wykonywany jest blok kodu pierwszego warunku, który zwraca status 0 (sukces). Np. Jeśli Jeśli żaden z warunków nie zwróci statusu 0, Zwróć uwagę, że Aby wykonać blok kodu jeśli zmienna ma określoną wartość: Aby sprawdzić wiele wartości: Warunkiem mogą być dowolne polecenia systemu Linux. Odpowiedni blok kodu zostanie wykonany, jeśli polecenie zostanie wykonane pomyślnie. W powyższym przykładzie, ponieważ Możemy też zagnieździć inne Jest to przydatne, gdy po spełnieniu warunku początkowego należy sprawdzić oddzielny zestaw warunków. Na przykład poniższy kod próbuje zainstalować oprogramowanie serwera WWW: Kod najpierw sprawdza, czy Nginx jest już zainstalowany w systemie. Jeśli tak, wyświetla tylko komunikat i kończy działanie. Jeśli tak nie jest, próbuje zainstalować Nginx. Jeśli z jakiegoś powodu Nginx nie mógł zostać zainstalowany w systemie z pakietu, próbuje zainstalować Apache2. Jeśli nawet Apache2 wyświetla błąd podczas instalacji, kończy wyświetlanie komunikatu, że nie można zainstalować żadnego oprogramowania. W podobny sposób można użyć zagnieżdżonego bloku wewnątrz Podobnie jak w przypadku każdego kodu Bash, Użytkownik może również zapisać ten kod w pliku skryptu i wykonać plik skryptu. ten Aby nadać uprawnienia do wykonywania tego pliku, uruchom: Na koniec, aby uruchomić plik, uruchom: Podobny do każdego języka programowania, zwraca status niezerowy (awaria), wtedy
sprawdzone. Jeśli
zwraca status 0,
jest wykonywany. Następnie dalsze warunki nie są sprawdzane, a wykonywanie kodu jest kontynuowane do kodu po
fi
oświadczenie. w bloku else jest wykonywany. Zauważ, że blok else jest opcjonalny. Jeśli żaden warunek nie jest spełniony, a także nie
w przeciwnym razie
blok jest określony, żaden warunkowy blok kodu nie zostanie uruchomiony, a wykonanie kodu będzie kontynuowane do kodu po fi
oświadczenie, jak pokazano na poniższym schemacie.następnie
oświadczenie ma być używane dopiero po Jeśli
oraz Elifa
oświadczenia i nie są wymagane po w przeciwnym razie
oświadczenie.Przykłady
x=0 if [ $x -eq 0 ] then echo "Wartość X wynosi 0" else echo "Wartość X nie wynosi 0" fi
x=2 if [ $x -eq 0 ] then echo "Wartość X wynosi 0" elif [ $x -eq 1 ] then echo "Wartość X wynosi 1" elif [ $x -eq 2 ] then echo "Wartość X to 2" else echo "Wartość X nie wynosi 0" fi
if npm -v to echo "NPM obecny w systemie" w przeciwnym razie sudo apt zainstaluj npm fi
npm
nie było zainstalowane w systemie, polecenie npm -v
zwrócił niezerowy status. W związku z tym wykonanie kodu przeszło do w przeciwnym razie
blok, w którym instalujemy npm za pomocą trafny
menedżer pakietów. Jak widać, poprosiło mnie o podanie hasła i rozpoczęło się instalację npm.Jeśli inaczej
zablokuj wewnątrz i Jeśli
, w przeciwnym razie
lub Elifa
blok:x=0 y=1 if [ $x -eq 0 ] then echo "X to 0" if [ $y -eq 1 ] then echo "Y to 1" else echo "Y nie jest 1" fi else echo "X jest nie 0" fi
jeśli nginx -v to echo "NGINX jest już zainstalowany." w przeciwnym razie, jeśli sudo apt install nginx, wyświetl echo „Instalacja NGINX powiodła się”. elif sudo apt install apache2 następnie echo "Instalacja APACHE2 powiodła się." else echo "Nie można zainstalować żadnego oprogramowania internetowego." fi
Elifa
blokować.Wykonywanie
Jeśli inaczej
: Skrypty i wiersz poleceńJeśli inaczej
Instrukcja może być użyta w powłoce Bash bezpośrednio lub z pliku wykonywalnego skryptu powłoki. Gdy tłumacz Bash znajdzie Jeśli
, w przeciwnym razie
lub Elifa
oświadczenie, kontynuuje powłokę, aby umożliwić użytkownikowi wprowadzenie bloku kodu.#!/kosz/bash
na początku określa interpreter, który ma być użyty podczas wykonywania pliku. Chociaż Bash jest obecnie najczęściej używaną powłoką, niektórzy użytkownicy wolą powłoki takie jak zsh, które należy określić zamiast bash na początku tego pliku.chmod +x test.sh
./test.sh
Wniosek
Jeśli inaczej
oświadczenie jest podstawową cechą Bash. Nauka jego użycia ma długą drogę do pisania zarówno podstawowych, jak i zaawansowanych skryptów.