Rodzaje instrukcji warunkowych
W BASH można zastosować następujące rodzaje instrukcji warunkowych.
Każdy rodzaj stwierdzeń jest wyjaśniony w tym samouczku z przykładem.
Operatorzy warunkowe
Wielu operatorów warunkowych można użyć w instrukcji „jeśli” do wykonania dowolnego zadania warunkowego. Niektóre głównie używane operatory warunkowe są wymienione poniżej.
Operator | Opis |
-Eq | Zwraca prawdziwie, jeśli dwie liczby są równoważne |
-Lt | Zwraca prawdziwie, jeśli liczba jest mniejsza niż inna liczba |
-Gt | Zwraca prawdziwie, jeśli liczba jest większa niż inna liczba |
== | Zwraca prawdziwie, jeśli dwa ciągi są równoważne |
!= | Zwraca prawdziwie, jeśli dwa ciągi nie są równoważne |
! | Zwraca prawdziwie, jeśli wyrażenie jest fałszywe |
-D | Sprawdź istnienie katalogu |
-mi | Sprawdź istnienie pliku |
-R | Sprawdź istnienie pliku i uprawnienia do odczytu |
-w | Sprawdź istnienie pliku i zapisz zgodę |
-X | Sprawdź istnienie pliku i wykonaj uprawnienia |
Korzystanie z prostej instrukcji IF
Składnia:
Jeśli [warunek]; Następnie
Polecenia)
fi
Ten przykład pokazuje pojedyncze warunkowe użycie instrukcji IF. Utwórz plik o nazwie „Cond1.sh 'i dodaj następujący skrypt. Ten skrypt przyjmie wartość liczbową jako wejście i sprawdź, czy wartość jest mniejsza niż 100 lub nie, używając warunku IF. Jeśli warunek jest prawdziwy, wydrukuje wiadomość w terminalu.
Cond1.cii
#!/bin/bash
echo „Wprowadź numer”
czytaj n
jeśli [$ n -lt 100]; Następnie
printf "$ n to mniej niż 100 \ n"
fi
Wyjście:
Uruchom skrypt.
$ bash cond1.cii
Tutaj 87 jest przyjmowane jako dane wejściowe, które jest mniejsze niż 100. Tak więc wyjście to „87 to mniej niż 100”. Nie jest drukowane wyjście dla wejścia większego niż 100.
Jak zastosować dwa warunki z logicznym i w instrukcji „Jeśli” jest pokazane w tym przykładzie. Utwórz plik o nazwie 'Cond2.cii'i dodaj następujący skrypt. Tutaj, nazwa użytkownika I hasło zostanie zabrany od użytkownika. Następnie instrukcja „jeśli” służy do sprawdzenia nazwy użytkownika 'Admin„A hasło jest”Superuser'. Jeśli obie wartości są zgodne, to instrukcja „jeśli” zwróci true i wydrukuj komunikat „Zaloguj się”.
Cond2.cii
#!/bin/bash
echo „Wprowadź nazwę użytkownika”
Przeczytaj un
echo „Wprowadź hasło”
Przeczytaj PW
jeśli [[„$ un” == „admin” && "$ pW" == "superuser"]]; Następnie
echo "login sukcesu."
fi
Wyjście:
Uruchom skrypt.
$ bash cond2.cii
Skrypt nie wydrukuje wyjścia dla nieprawidłowego wejścia i wydrukuj komunikat sukcesu dla prawidłowego wejścia.
Korzystanie z instrukcji IF-ELSE
Składnia:
Jeśli [warunek]; Następnie
Polecenia)
w przeciwnym razie
Polecenia)
fi
Aby wykonać jedno instrukcja dla prawdziwego warunku, a drugie instrukcja dla fałszywego warunku, Jeśli inaczej Instrukcja jest używana w tym przykładzie. Utwórz plik o nazwie 'Cond3.cii' i dodaj następujący skrypt. Tutaj, $ Nazwa Zmienna służy do przyjmowania danych wejściowych od użytkownika i wartości $ Nazwa zostanie porównane z dwiema wartościami, „Neha” I 'Zero'. Jeśli $ Nazwa pasuje do dowolnej z tych wartości, jeśli warunek zwróci true i stwierdzenie 'Jeśli' część zostanie wykonana. Jeśli $ Nazwa nie pasuje do żadnej z wartości, jeśli warunek zwróci false, a oświadczenie „w przeciwnym razie' część zostanie wykonana.
Cond3.cii
#!/bin/bash
Echo „Wprowadź swoje imię”
Przeczytaj nazwę
Jeśli [[$ name == "Neha" || $ name == 'nil']]; Następnie
echo „Wygrałeś nagrodę”
w przeciwnym razie
Echo „Spróbuj następnym razem”
fi
Wyjście:
Uruchom skrypt.
$ bash cond3.cii
Dane wyjściowe brzmi: „Wygrałeś nagrodę” dla prawidłowego wejścia i „spróbuj następnego razu” dla nieprawidłowego wejścia.
Korzystanie z instrukcji IF-ELIF-ELSE
Składnia:
Jeśli [warunek]; Następnie
Polecenia)
elif [warunek]; Następnie
Polecenia)
…
w przeciwnym razie
Polecenia)
fi
Wiele warunków z wieloma instrukcjami, jeśli stwierdzenia są zadeklarowane w tym przykładzie, aby wydrukować ocenę na podstawie znaku wejściowego. Utwórz plik o nazwie 'Cond4.cii'i dodaj następujący skrypt. Po przyjęciu wartości $ Mark, Pierwsza instrukcja „jeśli” przetestuje wartość jest większa lub równa 90. Jeśli zwróci prawdę, wydrukuje „klasę - a+”, w przeciwnym razie przejdzie do drugiego warunku. Drugi „jeśli” przetestuje wartość mniejszą niż 90 i większą lub równą 80. Jeśli zwróci prawdę, wydrukuje „klasę - a”, w przeciwnym razie pójdzie na trzeci warunek. Jeśli trzeci warunek jest prawdziwy, wydrukuje „klasę - b+”, w przeciwnym razie wybierze czwarty warunek. Jeśli czwarty warunek jest prawdziwy, wówczas wydrukuje „klasę - c+”, a jeśli zwróci false, wówczas zostanie wykonane instrukcja części innej, która wydrukuje „klasa - f”.
Cond4.cii
#!/bin/bash
echo „Wprowadź znak”
Przeczytaj Mark
if (($ mark> = 90)); Następnie
Echo „Grade - A+”
elif (($ mark < 90 && $mark >= 80)); Następnie
Echo „Grade - A”
elif (($ mark < 80 && $mark >= 70)); Następnie
Echo „Grade - B+”
elif (($ mark < 70 && $mark >= 60)); Następnie
Echo „Grade - C+”
w przeciwnym razie
Echo „Grade - F”
fi
Wyjście:
Uruchom skrypt.
$ bash cond4.cii
Skrypt jest testowany według trzech wartości Mark. To są 95, 79 i 50. Zgodnie z warunkami zastosowanymi w skrypcie wydrukowane jest następujące dane wyjściowe.
Użycie zagnieżdżonych, jeśli
Składnia:
Jeśli [warunek]; Następnie
Polecenia
Jeśli [warunek]; Następnie
Polecenia
fi
fi
Ten przykład pokazuje użycie zagnieżdżonej instrukcji IF, które obliczy premia na podstawie czasu sprzedaży i czasu trwania czasu. Utwórz plik o nazwie „Cond5.sh 'i dodaj następujący kod. Wartości $ kwota I Czas trwania są traktowane jako dane wejściowe. Następnie pierwsza instrukcja „jeśli” sprawdzi kwotę $, jest większa lub równa 10000 lub nie. Jeśli zwróci prawdę, sprawdzi stan zagnieżdżonego „If”. wartość Czas trwania jest sprawdzany przez wewnętrzną instrukcję „jeśli”. Jeśli Czas trwania jest mniejsze lub równe 7, a następnie komunikat „Otrzymasz 20% bolusa”, w przeciwnym razie wiadomość „Będziesz premię 15%” zostanie przechowywana w $ wyjście zmienny. Jeśli pierwszy warunek „jeśli” zwróci fałsz, wówczas zostaną wykonane instrukcje innej części. W drugim zagnieżdżonym warunku „Jeśli” komunikat „Otrzymasz 10% bonusu”, wydrukuje w celu zwrócenia prawdziwej wartości, a komunikat „otrzymasz 5% bonus”, aby wydrukować w celu zwrócenia wartości fałszywej.
Cond5.cii
#!/bin/bash
echo „Wprowadź kwotę sprzedaży”
czytaj kwotę
echo „Wprowadź czas trwania”
Przeczytaj czas trwania
if (($ kwota> = 10000)); Następnie
if (czas trwania <= 7 )); then
wyjście = "Otrzymasz 20% bonusu"
w przeciwnym razie
wyjście = "Otrzymasz 15% bonusu"
fi
w przeciwnym razie
if (czas trwania <= 10 )); then
Output = "Otrzymasz 10% bonusu"
w przeciwnym razie
wyjście = "Otrzymasz 5% bonusu"
fi
fi
echo „$ wyjście”
Wyjście:
Uruchom skrypt.
$ bash cond5.cii
Skrypt jest testowany przez 12000 jako kwota i 5 jako wartość czasu trwania. Zgodnie z warunkami „jeśli” wiadomość: „Otrzymasz 20% premię, jest wydrukowana. Następnie skrypt jest testowany przez 9000 jako kwota i 12 jako wartości czasu trwania, a wiadomość „otrzymasz 5% bonus”.
Korzystanie z instrukcji sprawy
Składnia:
sprawa w
wzór 1) polecenia ;;
wzór n) polecenia ;;
esac
Oświadczenie „sprawa” może być używane jako alternatywa dla „If”. Utwórz plik o nazwie 'Cond6.cii' i dodaj następujący kod, aby wykonać proste operacje arytmetyczne. Ten skrypt odczytuje trzy wartości z wiersza poleceń i przechowują w zmiennych, $ n1, $ n2 i $ op. Tutaj n1 $ i $ n2 są używane do przechowywania dwóch wartości liczbowych, a $ op jest używany do przechowywania dowolnego operatora arytmetycznego lub symbolu. Instrukcja „sprawa” służy do sprawdzenia czterech symboli do wykonania dowolnej operacji arytmetycznej. Kiedy $ op jest „+”, doda $ n1 i $ n2 i przechowuje wynik w wyniku $. W ten sam sposób, „-” i '/' są używane do wykonywania działalności odejmowania i podziału. Do wykonania operacji mnożenia jest używany symbol „x”. W przypadku dowolnej innej wartości $ OP wydrukuje wiadomość „Niewłaściwa liczba argumentów”.
Cond6.cii
#!/bin/bash
N1 = 1 USD
OP = 2 USD
N2 = 3 USD
Case $ op in
„+”)
((Wynik = $ n1+$ n2)) ;;
„-”)
((Wynik = $ n1- $ n2)) ;;
'X')
((Wynik = $ n1*$ n2)) ;;
„/”)
((Wynik = $ n1/$ n2)) ;;
*)
Echo „Niewłaściwa liczba argumentów”
wyjście 0 ;;
esac
echo "$ n1 $ op $ n2 = $ wynik"
Wyjście:
Uruchom skrypt z trzema argumentami wiersza poleceń. Skrypt jest wykonywany cztery razy za pomocą czterech operatorów, „+”, „-”, „x” i '/'.
$ bash cond6.SH 40 + 20
$ bash cond6.SH 40 - 20
$ bash cond6.SH 40 x 20
$ bash cond6.SH 40 /20
Następujące dane wyjściowe pojawią się po uruchomieniu skryptu.
Przykład-7: instrukcja „sprawa” o zakresie wartości
Oświadczenie „sprawa” nie może zdefiniować wielu warunków z operatorem logicznym, takim jak instrukcja „If”. Ale za pomocą rury („|”) można przypisać wiele warunków w instrukcji „Case”. Ten przykład pokazuje wartość oceny na podstawie takich znaków Przykład-4 ale użycie instrukcji „case” zamiast „jeśli”. $ Nazwa I $ marK Wartości są podawane przez argumenty wiersza poleceń. Pierwszy warunek jest zdefiniowany przez '9 [0-9] | 100„Do drukowania„ klasy - A+”. Oznacza to, że wartość $ Mark mieści się w granicach 90-99 lub 100, warunek będzie prawdziwy. Drugi warunek to '8 [0-9]„Do drukowania„ klasy - a ”i to będzie pasować $ Mark z dowolną wartością z zakresu, 80-89. Trzeci i czwarty warunki działają jak drugi warunek. Piąty warunek to '0 | 1 [0-9] | 2 [0-9] | 3 [0-9] | 4 [0-9] | 5 [0-9]„Do drukowania„ klasy - f ”i będzie pasował $ Mark z 0 lub dowolną liczbą w zakresie 0-9, 10-19, 20-29, 30-39, 40-49 i 50-59.
Cond7.cii
#!/bin/bash
# Ocena drukowania na podstawie znaku
Nazwa = 1 $
Mark = 2 USD
case $ mark in
9 [0-9] | 100)
Grade = "a+" ;;
8 [0-9])
Grade = "a" ;;
7 [0-9])
Grade = "b+" ;;
6 [0-9])
Grade = "c+" ;;
0 | [0-9] | 1 [0-9] | 2 [0-9] | 3 [0-9] | 4 [0-9] | 5 [0-9])
Grade = "f" ;;
*)
Echo „Nieprawidłowy znak”
wyjście 0 ;;
esac
Echo „Nazwa $ uzyskana $ klasa”
Wyjście:
Uruchom skrypt z dwoma argumentami wiersza poleceń. Skrypt jest uruchamiany cztery razy z różnymi wartościami argumentów.
$ bash cond7.SH LILY 92
$ bash cond7.SH Nahar 78
$ bash cond7.sh John 500
$ bash cond7.sh John aa
W tym samouczku próbuje się wyjaśnić wiele zastosowań warunków za pomocą odpowiednich przykładów. Mam nadzieję, czytelnik będzie mógł efektywnie używać instrukcji warunkowych w skrypcie bash po prawidłowym ćwiczeniu powyższych przykładów.
Aby uzyskać więcej informacji, obejrzyj wideo!