Skrypty Bash – instrukcja If

Skrypty Bash – instrukcja If

Bash jest interpreterem języków poleceń. Jest to domyślny interpreter poleceń w większości GNU/ Systemy linuksowe i jest powszechnie dostępny w różnych systemach operacyjnych. Nazwa jest skrótem od Bourne – Znowu SHELL . Skrypty umożliwiają wykonywanie instrukcji, które w przeciwnym razie byłyby wykonywane jedna po drugiej, interaktywnie.

W tym artykule omówimy instrukcję if w skrypcie bash.

Instrukcja Bash If

Podstawowa składnia instrukcji `if` w Bash:

#!/bin/bash  if [ condition ]; then  # code to be executed if the condition is true fi 

Wyjaśnienie:

  • if [ condition ]; then> : Ta linia rozpoczyna instrukcję if, gdzie condition> jest wyrażeniem, które jest oceniane. Jeśli warunek jest spełniony, kod wewnątrz pliku then> blok jest wykonywany.
  • # code to be executed if the condition is true> : Jest to blok kodu, który jest wykonywany, jeśli warunek określony w instrukcji if jest prawdziwy.
  • fi> : Oznacza to koniec instrukcji if.

Skrypt Bash sprawdzający, czy liczba jest parzysta

Poniżej znajduje się przykład scenariusz który poprosi Cię o wprowadzenie liczby, a następnie sprawdzi, czy podana liczba jest parzysta.

#!/usr/bin/bash
# Ten skrypt monituje użytkownika o wprowadzenie liczby, sprawdza, czy jest parzysta i wyświetla odpowiedni komunikat.
# Poproś użytkownika o wprowadzenie numeru

echo -n Podaj liczbę:
przeczytaj x

# Sprawdź, czy wprowadzona liczba jest parzysta
jeśli [ $((x % 2)) == 0 ]; Następnie
echo Liczba jest parzysta
Być

Wyjaśnienie:

  1. #!/usr/bin/bash> : To jest linia Shebang, która określa ścieżkę do interpretera Bash. Wskazuje, że skrypt powinien zostać wykonany przy użyciu Bash.
  2. echo -n 'Enter Number: '> : Ta linia wyświetla monit Wprowadź numer: bez znaku nowej linii ( -n> opcja). Czeka, aż użytkownik wprowadzi liczbę.
  3. read x> : Odczytuje dane wprowadzone przez użytkownika i przypisuje je do zmiennej x> .
  4. if [ $((x % 2)) == 0 ]; then> : Ta linia sprawdza, czy pozostała część dzielenia wprowadzonej liczby ( x> ) przez 2 równa się 0. Jeśli prawda, oznacza to, że liczba jest parzysta.
  5. echo 'Number is Even'> : Jeśli warunek w instrukcji if jest prawdziwy, ta linia wypisuje na konsoli opcję Number is Even.

Wyjście:

Skrypt Bash sprawdzający, czy liczba jest parzysta

Skrypt Bash sprawdzający, czy liczba jest parzysta

Notatka: Skrypt nie obsługuje przypadków, w których użytkownik wprowadza wartość inną niż numeryczna. Jeśli użytkownik wprowadzi wartość inną niż numeryczna, może to spowodować nieoczekiwane wyniki. Aby rozwiązać ten problem, można dodać dodatkową weryfikację danych wejściowych.

Bash instrukcja if-else

Podstawowa składnia instrukcji „if-else” w języku Bash:

#!/bin/bash

jeśli [warunek]; Następnie

# kod, który ma zostać wykonany, jeśli warunek jest spełniony

w przeciwnym razie

# kod, który ma zostać wykonany, jeśli warunek jest fałszywy

Być

Wyjaśnienie:

  • if [ condition ]; then> : Ta linia rozpoczyna instrukcję if, gdzie condition> jest wyrażeniem, które jest oceniane. Jeśli warunek jest spełniony, kod wewnątrz pliku then> blok jest wykonywany.
  • # code to be executed if the condition is true> : Jest to blok kodu, który jest wykonywany, jeśli warunek określony w instrukcji if jest prawdziwy.
  • else> : Jeśli warunek w instrukcji if jest fałszywy, kod wewnątrz else> blok jest wykonywany.
  • # code to be executed if the condition is false> : Jest to blok kodu, który jest wykonywany, jeśli warunek określony w instrukcji if jest fałszywy.
  • fi> : Oznacza to koniec instrukcji if-else.

Jak znaleźć większą liczbę za pomocą instrukcji if-else w skrypcie Bash?

Oto skrypt Bash, aby znaleźć większą liczbę za pomocą instrukcji if-else w skrypcie Bash.

#!/bin/bash
# Poproś użytkownika o wprowadzenie wartości x

echo -n Podaj wartość x:
przeczytaj x

jeśli [ $x -gt 5 ]; Następnie
echo x jest większe niż 5
w przeciwnym razie
echo x nie jest większe niż 5
Być

Wyjaśnienie:

  • #!/bin/bash : Ta linia nazywa się shebang i wskazuje, że skrypt powinien być interpretowany i wykonywany przy użyciu powłoki Bash.
  • # Poproś użytkownika o wprowadzenie wartości x : To jest komentarz wskazujący cel następnej linii.
  • echo -n Podaj wartość x: : Ta linia wyświetla komunikat Wprowadź wartość x: do terminala bez przechodzenia do następnej linii. Użytkownik wprowadzi swoją wartość w tej samej linii.
  • przeczytaj x : Ta linia odczytuje dane wprowadzone przez użytkownika i przypisuje je do zmiennej „x”.
  • jeśli [ $x -gt 5 ]; Następnie : To jest instrukcja if, która sprawdza, czy wartość „x” jest większa niż 5.
    • $x : Reprezentuje wartość zmiennej „x”.
    • -gt : Oznacza większy niż w kontekście porównania numerycznego.
    • 5 : Wartość, z którą porównywana jest.
  • echo x jest większe niż 5 : Jeśli warunek z poprzedniego wiersza jest prawdziwy, wiersz ten zostanie wykonany, a na terminal zostanie wysłana wartość x większa niż 5.
  • w przeciwnym razie : Jeśli warunek w instrukcji if jest fałszywy, skrypt przeskakuje do bloku else.
  • echo x nie jest większe niż 5 : Ta linia jest wykonywana, jeśli wartość „x” nie jest większa niż 5, drukowanie x nie jest większe niż 5 na terminalu.
  • Być : Oznacza to koniec bloku if-else.

Wyjście:

Znajdowanie większej liczby za pomocą if-else

Znajdowanie większej liczby za pomocą if-else

Instrukcja Bash if-elif-else

The if-elif-else> instrukcja w Bash służy do rozgałęziania warunkowego. Umożliwia określenie wielu warunków i wykonanie różnych bloków kodu w oparciu o ocenę tych warunków.

Podstawowa składnia instrukcji `if-elif-else` w Bash:

#!/bin/bash

jeśli [warunek1]; Następnie
# Kod, który ma zostać wykonany, jeśli warunek 1 jest prawdziwy
elif [warunek2]; Następnie
# Kod, który ma zostać wykonany, jeśli warunek2 jest prawdziwy
elif [warunek3]; Następnie
# Kod do wykonania, jeśli warunek 3 jest prawdziwy
w przeciwnym razie
# Kod, który ma zostać wykonany, jeśli żaden z warunków nie jest spełniony
Być

Wyjaśnienie:

  • jeśli [warunek1]; Następnie : To jest punkt wyjścia if-elif-else> oświadczenie. Kod w tym bloku zostanie wykonany, jeśli condition1> jest prawdziwy.
  • # Kod, który ma zostać wykonany, jeśli warunek 1 jest prawdziwy : Zastąp ten komentarz rzeczywistym kodem, który chcesz uruchomić if condition1> jest prawdziwy.
  • elif [warunek2]; Następnie : Jeśli condition1> ma wartość false, skrypt sprawdza condition2> . Jeśli condition2> ma wartość true, wykonywany jest kod zawarty w tym bloku.
  • # Kod, który ma zostać wykonany, jeśli warunek2 jest prawdziwy : Zastąp ten komentarz rzeczywistym kodem, który chcesz uruchomić if condition2> jest prawdziwy.
  • elif [warunek3]; Następnie : Jeśli oba condition1> I condition2> są fałszywe, skrypt sprawdza condition3> . Jeśli condition3> ma wartość true, wykonywany jest kod zawarty w tym bloku.
  • # Kod do wykonania, jeśli warunek 3 jest prawdziwy : Zastąp ten komentarz rzeczywistym kodem, który chcesz uruchomić if condition3> jest prawdziwy.
  • w przeciwnym razie : Jeśli żaden z powyższych warunków (warunek 1, warunek 2, warunek 3 itd.) nie jest prawdziwy, kod w obrębie else> blok jest wykonywany.
  • # Kod, który ma zostać wykonany, jeśli żaden z warunków nie jest spełniony : Zastąp ten komentarz rzeczywistym kodem, który chcesz uruchomić, jeśli żaden z warunków nie jest spełniony.
  • Być : To oznacza koniec if-elif-else> oświadczenie. Słowo fi jest pisane od tyłu i służy do zamykania bloków warunkowych w Bash.

Jak sprawdzić, czy liczba jest dodatnia, ujemna lub zerowa, używając instrukcji „if-elif-else” w Bash?

Rozszerzmy kod z powyższego przykładu, aby dodać warunek sprawdzający zero.

#!/bin/bash

# Poproś użytkownika o wprowadzenie numeru

echo -n Podaj liczbę:
przeczytaj nr

jeśli [ $liczba -gt 0 ]; Następnie
echo $num jest liczbą dodatnią.
elif [ $liczba -lt 0 ]; Następnie
echo $num jest liczbą ujemną.
w przeciwnym razie
echo $num wynosi zero.
Być

Wyjaśnienie:

  • #!/bin/bash : Ta linia to shebang wskazujący, że skrypt powinien być interpretowany i wykonywany przy użyciu powłoki Bash.
  • # Poproś użytkownika o wprowadzenie numeru : To jest komentarz wskazujący cel następnej linii.
  • echo -n Podaj liczbę: : W tej linii drukowany jest komunikat Wprowadź cyfrę: do terminala bez przechodzenia do następnej linii. Użytkownik wprowadzi swój numer w tej samej linii.
  • przeczytaj nr : Ta linia odczytuje dane wprowadzone przez użytkownika i przypisuje je do zmiennej „num”.
  • jeśli [ $liczba -gt 0 ]; Następnie : To jest instrukcja if, która sprawdza, czy wartość „num” jest większa niż 0.
    • $liczba : Reprezentuje wartość zmiennej „num”.
    • -gt : Oznacza większy niż w kontekście porównania numerycznego.
    • 0 : Wartość, z którą porównywana jest.
  • echo $num jest liczbą dodatnią. : Jeśli warunek z poprzedniego wiersza jest prawdziwy, wiersz ten zostanie wykonany, a wydruk $num będzie liczbą dodatnią. do terminala.
  • elif [ $liczba -lt 0 ]; Następnie : Jeśli warunek w instrukcji if jest fałszywy, ta linia sprawdza, czy wartość „num” jest mniejsza niż 0.
    • $liczba : Reprezentuje wartość zmiennej „num”.
    • -lt : Oznacza mniej niż w kontekście porównania numerycznego.
    • 0 : Wartość, z którą porównywana jest.
  • echo $num jest liczbą ujemną. : Jeśli warunek w instrukcji elif jest prawdziwy, ta linia zostanie wykonana, a wydruk $num będzie liczbą ujemną. do terminala.
  • w przeciwnym razie : Jeśli oba warunki w instrukcjach if i elif są fałszywe, skrypt przeskakuje do bloku else.
  • echo $num wynosi zero. : Ta linia jest wykonywana, jeśli wartość „liczba” jest nie większa niż 0 i nie mniejsza niż 0, drukowanie $num wynosi zero. do terminala.
  • Być : Oznacza to koniec bloku if-elif-else.

Wyjście:

jeśli liczba jest dodatnia, ujemna lub zerowa, użyj `if-elif-else`

jeśli liczba jest dodatnia, ujemna lub zerowa, użyj `if-elif-else`

Bash Zagnieżdżona instrukcja if

W Bash możesz używać zagnieżdżonych if> instrukcje do tworzenia bardziej złożonych struktur warunkowych. Oto składnia elementu zagnieżdżonego if> oświadczenie:

#!/bin/bash

jeśli [warunek1]; Następnie
# Kod, który ma zostać wykonany, jeśli warunek 1 jest prawdziwy
jeśli [warunek2]; Następnie
# Kod, który ma zostać wykonany, jeśli warunek2 jest prawdziwy
w przeciwnym razie
# Kod, który ma zostać wykonany, jeśli warunek2 jest fałszywy
Być
w przeciwnym razie
# Kod, który ma zostać wykonany, jeśli warunek 1 jest fałszywy
Być

Wyjaśnienie:

  • jeśli [warunek1]; Następnie : To jest zewnętrzne if> oświadczenie. Jeśli condition1> ma wartość true, wykonywany jest kod znajdujący się w tym bloku.
  • # Kod, który ma zostać wykonany, jeśli warunek 1 jest prawdziwy : Zastąp ten komentarz rzeczywistym kodem, który chcesz uruchomić if condition1> jest prawdziwy.
  • jeśli [warunek2]; Następnie : Wewnątrz bloku zewnętrznego if> stwierdzenie, istnieje wewnętrzne if> oświadczenie. Jeśli condition2> ma wartość true, wykonywany jest kod znajdujący się w tym bloku.
  • # Kod, który ma zostać wykonany, jeśli warunek2 jest prawdziwy : Zastąp ten komentarz rzeczywistym kodem, który chcesz uruchomić if condition2> jest prawdziwy.
  • w przeciwnym razie : Jeśli condition2> we wnętrzu if> instrukcja jest fałszywa, kod wewnątrz else> blok wewnętrzny if> instrukcja jest wykonywana.
  • # Kod, który ma zostać wykonany, jeśli warunek2 jest fałszywy : Zastąp ten komentarz rzeczywistym kodem, który chcesz uruchomić if condition2> to fałsz.
  • Być : To oznacza koniec wnętrza if> oświadczenie.
  • w przeciwnym razie : Jeśli condition1> na zewnątrz if> instrukcja jest fałszywa, kod wewnątrz else> blok zewnętrzny if> instrukcja jest wykonywana.
  • # Kod, który ma zostać wykonany, jeśli warunek 1 jest fałszywy : Zastąp ten komentarz rzeczywistym kodem, który chcesz uruchomić if condition1> to fałsz.
  • Być : To oznacza koniec części zewnętrznej if> oświadczenie.

Jak sprawdzić uprawnienia do wieku i świadczenia dla seniorów w Bash przy użyciu zagnieżdżonych instrukcji if?

Zmieńmy trochę powyższy kod, aby użyć funkcji zagnieżdżonej.

#!/bin/bash
# Poproś użytkownika o podanie wieku
echo -n Podaj swój wiek:
przeczytaj wiek

if [ $wiek -ge 18 ]; Następnie
echo Masz prawo głosować.
if [ $wiek -ge 65 ]; Następnie
echo Masz również prawo do świadczeń emerytalnych.
w przeciwnym razie
echo Nie kwalifikujesz się jeszcze do świadczeń emerytalnych.
Być
w przeciwnym razie
echo Nie masz jeszcze uprawnień do głosowania.
Być

Wyjaśnienie:

  • #!/bin/bash : Ta linia to shebang wskazujący, że skrypt powinien być interpretowany i wykonywany przy użyciu powłoki Bash.
  • # Poproś użytkownika o podanie wieku : To jest komentarz wskazujący cel następnej linii.
  • echo -n Podaj swój wiek: : Ta linia wyświetla komunikat Podaj swój wiek: do terminala bez przechodzenia do następnej linii. Użytkownik wprowadzi swój wiek w tej samej linii.
  • przeczytaj wiek : Ta linia odczytuje dane wprowadzone przez użytkownika i przypisuje je do zmiennej „wiek”.
  • if [ $wiek -ge 18 ]; Następnie : To jest instrukcja if, która sprawdza, czy wartość „wiek” jest większa lub równa 18.
    • $wiek : Reprezentuje wartość zmiennej „wiek”.
    • -ge : Oznacza większy lub równy w kontekście porównania numerycznego.
    • 18 : Wartość, z którą porównywana jest.
  • echo Masz prawo głosować. : Jeśli warunek z poprzedniego wiersza jest spełniony, wiersz ten zostanie wykonany i wyświetli komunikat: Masz prawo do głosowania. do terminala.
  • if [ $wiek -ge 65 ]; Następnie : Wewnątrz pierwszego bloku if znajduje się kolejna instrukcja if, która sprawdza, czy wartość „wiek” jest większa lub równa 65.
    • $wiek : Reprezentuje wartość zmiennej „wiek”.
    • -ge : Oznacza większy lub równy w kontekście porównania numerycznego.
    • 65 : Wartość, z którą porównywana jest.
  • echo Masz również prawo do świadczeń emerytalnych. : Jeśli warunek w wewnętrznej instrukcji if jest prawdziwy, ten wiersz zostanie wykonany i wydrukowany. Masz również prawo do świadczeń emerytalnych. do terminala.
  • w przeciwnym razie : Jeśli warunek w wewnętrznej instrukcji if jest fałszywy, skrypt przeskakuje do bloku else wewnątrz zewnętrznej instrukcji if.
    • echo Nie kwalifikujesz się jeszcze do świadczeń emerytalnych. : Ta linia jest wykonywana, jeśli wartość „wiek” nie jest większa lub równa 65, drukowanie Nie jesteś jeszcze uprawniony do świadczeń emerytalnych. do terminala.
  • Być : Oznacza to koniec wewnętrznego bloku if-else.
  • w przeciwnym razie : Jeśli warunek w zewnętrznej instrukcji if jest fałszywy, skrypt przeskakuje do bloku else.
    • echo Nie masz jeszcze uprawnień do głosowania. : Ta linia jest wykonywana, jeśli wartość „wiek” nie jest większa lub równa 18, drukowanie Nie masz jeszcze uprawnień do głosowania. do terminala.
  • Być : Oznacza to koniec zewnętrznego bloku if-else.

Wyjście:

zagnieżdżone, jeśli używasz Bash

zagnieżdżone, jeśli używasz Bash

Często zadawane pytania i uwagi dotyczące CONDITION

Oto kilka rzeczy, o których warto pamiętać podczas pisania warunków testowych w bashu.

1. Zapewnij odstępy między nawiasami a właściwą instrukcją sprawdzenia/porównania.

Na przykład poniższe nie będą działać.

if [$x==0] 

Bash zgłosi błąd dotyczący a zaginiony ] .

2. Zawsze kończ linię przed dodaniem nowego słowa kluczowego, np. wtedy.

Jeśli zatem else, elif i fi są słowami kluczowymi powłoki, co oznacza, że ​​nie można ich użyć w tym samym wierszu. Umieść ; pomiędzy poprzednią instrukcją a słowem kluczowym lub rozpocznij nowy wiersz słowem kluczowym.

3. Aby użyć wielu warunków w jednej instrukcji, użyj operatorów logicznych.

Możemy używać operatorów logicznych AND(&&) lub logicznych OR(||), aby używać wielu warunków.

Na przykład:

if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then  echo 'x is greatest' fi 

W tym przypadku -ge jest skrótem oznaczającym większy lub równy

4. Jak porównać ciągi w instrukcji Bash if?

Użyj ` => `> operator równości ciągów i ` !=`> dla nierówności.

Na przykład:

if [ '$string1' = '$string2' ]; then  # Code to execute if strings are equal else  # Code to execute if strings are not equal fi 

5. Czy mogę używać wyrażeń regularnych w instrukcjach Bash if?

Tak, możesz użyć ` [[ ... ]]`> skonstruować w celu bardziej zaawansowanego dopasowywania ciągów za pomocą wyrażeń regularnych.

Na przykład:

if [[ '$string' =~ ^[0-9]+$ ]]; then  # Code to execute if the string contains only numbers else  # Code to execute if the string does not contain only numbers fi 

6. Jak sprawdzić, czy plik istnieje w skrypcie Bash za pomocą instrukcji if?

Możesz użyć ` -e`> flagę w takim stanie:

if [ -e 'filename' ]; then  # Code to execute if the file exists else  # Code to execute if the file does not exist fi 

7. Jaka jest składnia instrukcji if-else w skryptach Bash?

Podstawowa składnia dla „jeśli-inaczej”. instrukcja w skrypcie Bash to:

if [ condition ]; then  # Code to execute if condition is true else  # Code to execute if condition is false fi 

8. Jak używać instrukcji elif w skrypcie Bash?

` elif`> instrukcja służy do sprawdzania dodatkowych warunków, jeśli wartość inicjalna if> warunek jest fałszywy.

Oto przykład:

if [ condition1 ]; then  # Code to execute if condition1 is true elif [ condition2 ]; then  # Code to execute if condition2 is true else  # Code to execute if none of the conditions are true fi 

9. Jak mogę używać operatorów logicznych (AND, OR) w instrukcjach Bash if?

Możesz użyć ` -a`> dla logicznego AND i ` -o`> dla logicznego OR.

Na przykład:

if [ condition1 -a condition2 ]; then  # Code to execute if both conditions are true fi 

Wniosek

W tym artykule omówiliśmy skrypty Bash, które są niezwykle przydatnym narzędziem pozwalającym na automatyczne wykonywanie zadań przez komputer. Z tego artykułu dowiedzieliśmy się o instrukcji if w języku Bash, która działa jak proces decyzyjny w skryptach. Nauczyliśmy się podstaw, widzieliśmy przykłady, takie jak sprawdzanie, czy liczba jest parzysta lub sprawdzanie, czy ktoś może głosować, a nawet badaliśmy bardziej wyszukane rzeczy, takie jak obsługa wielu warunków lub umieszczanie instrukcji if wewnątrz siebie. Artykuł zawiera jasne wyjaśnienia, przykłady i odpowiedzi na często zadawane pytania, które pomogą nam lepiej posługiwać się skryptami Bash. Najważniejsze jest, aby zachować ostrożność przy szczegółach, takich jak odstępy i zasady specjalne, aby nasze skrypty działały sprawnie i ułatwiały wykonywanie zadań na komputerze.