Instrukcja Bash 'if else': samouczek i przykłady

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 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.

Jeśli żaden z warunków nie zwróci statusu 0, 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.

Zwróć uwagę, że 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

Aby wykonać blok kodu jeśli zmienna ma określoną wartość:

x=0 if [ $x -eq 0 ] then echo "Wartość X wynosi 0" else echo "Wartość X nie wynosi 0" fi

Aby sprawdzić wiele wartości:

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

Warunkiem mogą być dowolne polecenia systemu Linux. Odpowiedni blok kodu zostanie wykonany, jeśli polecenie zostanie wykonane pomyślnie.

if npm -v to echo "NPM obecny w systemie" w przeciwnym razie sudo apt zainstaluj npm fi

W powyższym przykładzie, ponieważ 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.

Możemy też zagnieździć inne 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

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:

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

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 Elifa blokować.

Wykonywanie Jeśli inaczej: Skrypty i wiersz poleceń

Podobnie jak w przypadku każdego kodu Bash, 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.

Użytkownik może również zapisać ten kod w pliku skryptu i wykonać plik skryptu.

ten #!/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.

Aby nadać uprawnienia do wykonywania tego pliku, uruchom:

chmod +x test.sh

Na koniec, aby uruchomić plik, uruchom:

./test.sh

Wniosek

Podobny do każdego języka programowania, 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.