50% zniżki wszystkie plany, oferta limitowana. Od $2.48/mo
Pozostało 10 min
Serwery i systemy operacyjne

Instrukcja Bash if: składnia, warianty, przypadki użycia, polecenia i więcej!

Pius Bodenmann By Pius Bodenmann 10 min czytania Zaktualizowano 28 stycznia 2024
skrypty bash

W skryptach powłoki instrukcje warunkowe `if` w Bash są nieodłącznym elementem – pozwalają programistom definiować różne ścieżki wykonania w zależności od sytuacji. Dzięki nim skrypt może podejmować decyzje na podstawie wyników testów, danych wejściowych użytkownika czy stanu systemu. To po prostu mechanizm reagowania na różne okoliczności.

Używając skryptów Bash, instrukcja if ma określoną strukturę. Zazwyczaj zaczyna się od "if słowo kluczowe, po którym następuje warunek wymagający oceny, wtedy słowo kluczowe oraz jeden lub więcej poleceń do wykonania, jeśli warunek jest spełniony.

Aby dodać większą elastyczność, instrukcja if może również zawierać opcjonalne "elifInstrukcja (else if) jest używana, gdy początkowy warunek jest fałszywy. Pozwala ona sprawdzić dodatkowy warunek i odpowiednio kontynuować działanie programu. Ponadto instrukcja if może zawierać opcjonalną instrukcję "else", która jest wykonywana, gdy żaden z warunków nie jest spełniony.

Łącząc instrukcje if z innymi poleceniami Bash i funkcjami skryptów powłoki, programiści mogą tworzyć zaawansowane skrypty zdolne do automatyzacji złożonych zadań i procesów. Czytaj dalej, aby dowiedzieć się więcej o instrukcji if w Bash: składni, zastosowaniach i przykładach!

Składnia instrukcji if w Bash

Składnia Bash to zestaw reguł określających strukturę i gramatykę poleceń oraz skryptów pisanych w języku powłoki Bash. Obejmuje ona między innymi następujące konstrukcje i elementy:

  • Polecenia: To indywidualne programy lub wbudowane polecenia powłoki, służące do wykonywania konkretnych zadań. Większość czasu spędzonego na programowaniu w Bash zajmie Ci właśnie praca z tymi wierszami.
  • Argumenty: To wartości przekazywane do poleceń w celu określenia opcji, parametrów lub danych wejściowych. Można je traktować jako warunki definiujące sposób wykonania danego polecenia.
  • Zmienne: Są to symbole reprezentujące wartości, które można przypisywać, modyfikować lub wykorzystywać w wyrażeniach. Służą do określania wartości, jakimi operują zarówno polecenia, jak i argumenty.
  • Przekierowanie: Jest to proces przekierowywania wejścia, wyjścia lub błędów do plików, urządzeń lub innych poleceń. Bez tego istnieje duże ryzyko, że polecenia trafią do niewłaściwego miejsca docelowego i wprowadzą chaos w kodzie.
  • Rurociągi: Jest to mechanizm łączący wyjście jednego polecenia z wejściem innego. Stosuje się go głównie do tworzenia złożonych, warunkowych poleceń w dużych programach oraz do budowania potoków przetwarzania danych.
  • Struktury kontrolne: Są to konstrukcje sterujące przepływem wykonywania poleceń, takie jak pętle, instrukcje warunkowe i funkcje. Znajomość struktur sterujących jest kluczowa przy tworzeniu zaawansowanych poleceń i pozwala nadać kodowi dodatkową warstwę złożoności.
  • Komentarze: Są to adnotacje ignorowane przez powłokę, służące do dokumentowania kodu i wyjaśniania jego działania. Stanowią istotny punkt odniesienia podczas analizy i debugowania, szczególnie w projektach zespołowych.

Składnia Bash musi być poprawna, żeby powłoka mogła interpretować i wykonywać polecenia. Błędy składniowe mogą powodować komunikaty o błędach lub nieoczekiwane zachowanie.

Oto przykład instrukcji warunkowej if w Bash:

if condition
then
   command1
   command2
   ...
   commandN
elif condition2
then
   commandA
   commandB
   ...
   commandC
else
   commandX
   commandY
   ...
   commandZ
fi

W tym przypadku "warunek" odnosi się do testu, który zwraca wynik prawda lub fałsz. Gdy warunek jest spełniony, wykonywane są kolejne polecenia określone po słowie kluczowym "then". Załóżmy teraz, że zamiast tego chcemy sprawdzić dodatkowy warunek. Możemy użyć do tego słowa kluczowego "elif". Daje ono możliwość uwzględnienia kolejnej opcji. Jeśli żaden z warunków nie jest spełniony, do akcji wkraczają polecenia określone po słowie kluczowym "else". Działa to jak plan awaryjny. Na koniec, aby zaznaczyć zakończenie instrukcji if, używamy słowa kluczowego "fi".

Jak działają instrukcje Bash?

W skryptach Bash instrukcja `if` to podstawowe narzędzie do sterowania przepływem wykonania na podstawie wyników warunków logicznych. Jej zadanie jest proste: sprawdza warunek i jeśli jest spełniony, wykonuje określony zestaw poleceń.

Zobaczmy, jak w praktyce działa instrukcja if w skrypcie Bash. Skrypt sprawdza warunek podany w instrukcji if. Jeśli warunek jest spełniony, wykonywane są polecenia zawarte w bloku "then".

Jeśli jednak warunek okaże się fałszywy, skrypt przechodzi do sprawdzania kolejnych warunków elif. Gdy któryś z nich jest spełniony, wykonywany jest odpowiedni blok elif. Jeśli żaden z warunków if ani elif nie jest prawdziwy, skrypt wykonuje polecenia z bloku else - o ile taki blok został zdefiniowany.

Instrukcja `if` to podstawowy mechanizm podejmowania decyzji w skrypcie — pozwala kierować wykonanie programu różnymi ścieżkami w zależności od wyniku testu. Sam test może uwzględniać różne czynniki, takie jak wynik polecenia lub wartość przypisana do zmiennej.

Instrukcja if w Bash na przykładzie

Przejdźmy od teorii do praktyki i zobaczmy, jak instrukcja warunkowa if w Bash sprawdza się w prawdziwym kodzie. Oto przykład, który pokazuje, jak to działa:

#!/bin/bash
# set a variable
x=5
# evaluate the variable
if [ $x -gt 4 ]
then
  echo "x is greater than 4."
else
  echo "x is less than or equal to 4."
fi

W tym przykładzie instrukcja if sprawdza wartość zmiennej x. Jeśli x jest większe od 4, skrypt wykonuje polecenie wypisania "x is greater than 4". Jeśli x jest mniejsze lub równe 4, skrypt wykonuje polecenie wypisania "x is less than or equal to 4".

Teraz, gdy dobrze rozumiesz podstawową instrukcję warunkową Bash If i zasadę jej działania, przejdźmy do bardziej zaawansowanych wariantów i powiązanych poleceń: Basic If Statements, Nested If Statements, Bash If Else, If Elif Else oraz Case Statements.

Podstawowe instrukcje warunkowe

Zacznijmy od podstawowej instrukcji warunkowej if w Bash. Sprawdza ona podany warunek i wykonuje odpowiedni blok kodu, gdy warunek jest spełniony. Składnia wygląda następująco:

if [ condition ]
then
  commands
fi

W tym przypadku skrypt sprawdza warunek i jeśli jest on spełniony, wykonuje określone polecenia. Jeśli warunek nie jest spełniony, skrypt przechodzi do następnego polecenia, pomijając blok w sekcji "then".

Zagnieżdżone instrukcje warunkowe

Zagnieżdżona instrukcja if, jak sama nazwa wskazuje, to instrukcja if umieszczona wewnątrz innej instrukcji if. Taka struktura pozwala na przeprowadzanie bardziej złożonych testów i analiz w skrypcie. Oto przykład zagnieżdżonej instrukcji if:

if [ condition1 ]
then
  if [ condition2 ]
  then
    commands
  fi
fi

W powyższych poleceniach widać, że skrypt najpierw sprawdza warunek1. Jeśli warunek1 jest spełniony, skrypt przechodzi do sprawdzenia warunek2. Jeśli warunek2 również jest spełniony, skrypt wykonuje odpowiednie polecenia.

Instrukcje warunkowe if-else w Bash

Instrukcja if else w Bash pozwala podejmować decyzje w skrypcie w zależności od tego, czy dany warunek jest spełniony czy nie, co umożliwia bardziej zaawansowane sterowanie przepływem wykonania. Oto jak wygląda jej składnia:

if [ condition ]
then
  commands1
else
  commands2
fi

Ta konstrukcja gwarantuje, że jeśli warunek jest spełniony, skrypt natychmiast wykonuje "commands1". Jeśli warunek nie jest spełniony, przechodzi do wykonania "commands2".

Instrukcje If, Elif i Else

Czasem trzeba obsłużyć wiele warunków i przypisanych do nich wyników. Instrukcja if elif else pozwala zrobić dokładnie to. Przyjrzyj się poniższej składni:

if [ condition1 ]
then
  commands1
elif [ condition2 ]
then
  commands2
else
  commands3
fi

Skrypt najpierw sprawdza condition1. Jeśli warunek jest spełniony, wykonywane są commands1. Jeśli nie, skrypt przechodzi do sprawdzenia condition2. Gdy condition2 jest prawdziwe, wykonywane są commands2. Jeśli oba warunki okażą się fałszywe, skrypt przechodzi do gałęzi alternatywnej i wykonuje commands3.

Instrukcje warunkowe

W Bashu masz do dyspozycji instrukcję case, która działa podobnie jak switch znany z innych języków programowania. Pozwala ona wykonywać różne zestawy poleceń w zależności od wartości zmiennej. Przyjrzyj się jej składni:

case expression in
  pattern1)
    commands1;;
  pattern2)
    commands2;;
  pattern3)
    commands3;;
*)
default commands;;
esac

Tu skrypt sprawdza wartość zmiennej expression i porównuje ją z kolejnymi wzorcami. Gdy znajdzie dopasowanie, wykonuje przypisany do niego zestaw poleceń. Jeśli żaden wzorzec nie pasuje, uruchamiane są polecenia domyślne. Wzorzec z gwiazdką (*) działa jako symbol wieloznaczny i dopasowuje wszystko, co nie zostało wcześniej obsłużone.

Operatory logiczne w Bash

Kolejnym ważnym elementem instrukcji warunkowej Bash są operatory logiczne. Pozwalają one łączyć wiele warunków i podejmować decyzje na podstawie ich łącznej wartości logicznej. Bash udostępnia trzy główne operatory logiczne do użycia w instrukcjach if. Poniżej znajdziesz przykłady każdego z nich.

  • Bash AND (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then
  echo "You meet the criteria for voting."
fi
  • Logiczny lub (||):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then
  echo "Access granted."
fi
  • Nie równy:
if(( ! $a == "true" )) then 
  echo "a" was initially false. 
else
  echo "a" was initially true. 
fi

Wnioski

W tym wpisie omówiliśmy podstawy instrukcji warunkowych if w Bash oraz sposoby ich zastosowania. Pokazaliśmy też, jak ich użycie sprawia, że kod staje się czytelniejszy i bardziej funkcjonalny. Umiejętne korzystanie z instrukcji warunkowych pozwala pisać skrypty, które radzą sobie ze złożonymi zadaniami i podejmowaniem decyzji.

Dopiero zaczynasz przygodę z Linux? Chętnie przeprowadzimy Cię przez wszystko, co musisz wiedzieć. Nasze Linux VPS to idealny punkt startowy dla początkujących – prosty w obsłudze, bez rezygnowania z możliwości. Dzięki przejrzystym interfejsom i wsparciu ekspertów, praca z serwerem Linux jest łatwiejsza niż kiedykolwiek. Czy konfigurujesz stronę internetową, testujesz aplikacje, czy dopiero odkrywasz świat Linux, nasze VPS Linux zapewnia bezpieczne środowisko bez zbędnych komplikacji. Zacznij pewnie swoją przygodę z Linux, sprawdź dostępne opcje VPS Linux już dziś.

Hosting Linux VPS

Wybierz dla siebie ekonomiczny lub premium Linux VPS do hostowania swojej strony lub pulpitu zdalnego, w najlepszej cenie. VPS działający na Linux KVM dla większej wydajności i pracujący na mocnym sprzęcie z pamięcią NVMe SSD dla większej prędkości.

Czytaj więcej

Często zadawane pytania

Czy mogę używać operatorów logicznych w instrukcjach if w Bash?

Tak, możesz używać operatorów logicznych, takich jak i oraz '||' w instrukcjach warunkowych Bash. Na przykład, if [ $var -gt 0 ] && [ $var -lt 10 ]; then … wykona blok kodu, jeśli $var jest większe niż 0 i mniejsze niż 10.

Czy mogę użyć wielu warunków w jednej instrukcji if?

Tak, możesz używać wielu warunków w jednej instrukcji if w Bash, łącząc je operatorami logicznymi, takimi jak -a (AND) lub -o (OR) aby je łączyć. Na przykład, if [ $var -gt 0 -a $var -lt 10 ]; then … wykona blok kodu, jeśli $var jest większy niż 0 i mniejszy niż 10.

Czy mogę używać podstawiania poleceń w instrukcjach if w Bash?

Tak, w instrukcjach warunkowych Bash możesz używać podstawiania poleceń, umieszczając polecenie w $() lub backticks (I need more context to translate this phrase. "For example," on its own would be: Na przykład, However, if you could provide the complete sentence or the surrounding context, I can give you a more accurate and natural translation. if [ $(whoami) == "root" ]; then … wykona blok kodu, jeśli bieżący użytkownik ma uprawnienia roota.

[[ vs [ vs ( vs ((): Czym różnią się te operatory w Bash?

Krótko mówiąc: [[ służy do zaawansowanych testów warunkowych. [ służy do podstawowych testów warunkowych. ( służy do grupowania poleceń w podpowłoce i ich wykonywania. (( służy do operacji arytmetycznych.

 

Udostępnij

Więcej z bloga

Czytaj dalej.

Obraz okładkowy najlepszych aplikacji self-hosted, które można uruchomić z Cosmos Cloud, z panelami aplikacji wokół dashboardu Cosmos.
Serwery i systemy operacyjne

Najlepsze aplikacje self-hosted, które możesz uruchomić z Cosmos Cloud: pliki, media, hasła, automatyzacja i więcej!

Może skonfigurowałeś już Cosmos Cloud i chcesz zobaczyć, jakie aplikacje do niego pasują, a może jeszcze nawet nie zdecydowałeś się na Cosmos i chcesz zobaczyć, jak dobrze pasuje do Twojego workflow

Nick SilverNick Silver 16 min czytania
Okładka Portainer vs Cosmos Cloud do zarządzania aplikacjami Docker z diagramem konfiguracji hybrydowej i neonowymi blokami ops vs access.
Serwery i systemy operacyjne

Portainer vs Cosmos Cloud: Najlepszy wybór do zarządzania aplikacjami Docker

Jeśli znasz już Docker i chcesz czystszego sposobu uruchamiania rosnącego stacka aplikacji, oto krótka odpowiedź na Portainer vs Cosmos Cloud. Portainer jest lepszym wyborem do bezpośredniego

Nick SilverNick Silver 14 min czytania
Grafika tematyczna Cosmos Cloud vs CasaOS vs Umbrel pokazująca trzy ścieżki self-hosted wewnątrz jednego abstrakcyjnego świata sieci chmurowych.
Serwery i systemy operacyjne

Cosmos Cloud vs CasaOS vs Umbrel: Która platforma self-hosted pasuje do Twojej konfiguracji?

Krótka odpowiedź jest taka, że CasaOS to wciąż najłatwiejsze miejsce na start, Umbrel ma najczystszy wyselekcjonowany wygląd, a Cosmos Cloud ma większy sens, gdy chcesz większej kontroli nad domeną

Nick SilverNick Silver 11 min czytania

Gotowy do wdrożenia? Od $2,48/mies.

Niezależna chmura od 2008 roku. AMD EPYC, NVMe, 40 Gbps. Zwrot pieniędzy w ciągu 14 dni.