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, gdziecondition>jest wyrażeniem, które jest oceniane. Jeśli warunek jest spełniony, kod wewnątrz plikuthen>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 numeruecho -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:
-
#!/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. -
echo -n 'Enter Number: '>: Ta linia wyświetla monit Wprowadź numer: bez znaku nowej linii (-n>opcja). Czeka, aż użytkownik wprowadzi liczbę. -
read x>: Odczytuje dane wprowadzone przez użytkownika i przypisuje je do zmiennejx>. -
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. -
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
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, gdziecondition>jest wyrażeniem, które jest oceniane. Jeśli warunek jest spełniony, kod wewnątrz plikuthen>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ątrzelse>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 xecho -n Podaj wartość x:
przeczytaj xjeś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
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ślicondition1>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 sprawdzacondition2>. Jeślicondition2>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>Icondition2>są fałszywe, skrypt sprawdzacondition3>. Jeślicondition3>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 nrjeś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`
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ślicondition1>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ętrzneif>oświadczenie. Jeślicondition2>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ętrzuif>instrukcja jest fałszywa, kod wewnątrzelse>blok wewnętrznyif>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ątrzif>instrukcja jest fałszywa, kod wewnątrzelse>blok zewnętrznyif>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 wiekif [ $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
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' fiW 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.