- Użycie instrukcji „If”.
- Użycie instrukcji „If-Else”.
- Użycie instrukcji „If-Elif-Else”.
- Użycie instrukcji „If” do sprawdzenia pustej zmiennej
- Użycie instrukcji „If” z operatorem logicznym
- Użycie zagnieżdżonych instrukcji „If”.
- Użycie instrukcji „If” do sprawdzenia istnienia pliku
- Użycie instrukcji „If” do sprawdzenia istnienia katalogu
- Użycie instrukcji „If” z wyrażeniem regularnym
- Użycie stwierdzenia „przypadek”.
Użycie instrukcji „If”.
Ten przykład pokazuje proste użycie instrukcji „if” w Bash. Do porównywania wartości liczbowych w Bash można użyć sześciu typów operatorów porównania. Są to „-eq” (równe), „-ne” (nierówne), „-le” (mniejsze niż równe), „-ge” (większe niż równe), „-lt” (mniejsze niż) i „ -gt” (większy niż). Zastosowanie „-lt” i „-eq” pokazano w poniższym skrypcie, niezależnie od tego, czy liczba jest mniejsza niż 99, czy też nie została sprawdzona za pomocą operatora „-lt”. Liczba jest parzysta lub nieparzysta i jest sprawdzana za pomocą operatora „-eq”.
#!/bin/bash
#Przypisz wartość liczbową
( ( numer = pięćdziesiąt ) )
#Sprawdź wartość liczbową za pomocą instrukcji „if”.
Jeśli [ $numer -lt 99 ]
Następnie
Echo „Numer jest ważny.”
Być
#Sprawdź, czy liczba jest parzysta, czy nie
Jeśli [ $ ( ( $numer % 2 ) ) -równ 0 ]
Następnie
Echo „Liczba jest parzysta”.
Być
Wyjście :
Po wykonaniu poprzedniego skryptu pojawiają się następujące dane wyjściowe:
Użycie instrukcji „If-Else”.
Użycie instrukcji „if-else” pokazano w poniższym skrypcie. Wartość ciągu jest pobierana od użytkownika i sprawdza, czy wartość jest „NIEBIESKA”, czy nie, za pomocą instrukcji „if-else”.
#!/bin/bash
#Pobierz wartość ciągu od użytkownika
Czytać -P „Wpisz swój ulubiony kolor:” kolor
#Sprawdź wartość ciągu za pomocą instrukcji „if-else”.
Jeśli [ ${kolor^^} == 'NIEBIESKI' ]
Następnie
Echo „W porządku, dostępny jest kolor niebieski.”
w przeciwnym razie
Echo ' $kolor jest niedostępne.'
Być
Wyjście :
Jeśli jako dane wejściowe zostanie przyjęte „czerwone”, po wykonaniu poprzedniego skryptu pojawią się następujące dane wyjściowe:
Jeśli jako dane wejściowe zostanie przyjęty „niebieski”, po wykonaniu poprzedniego skryptu pojawią się następujące dane wyjściowe:
Użycie instrukcji „If-Elif-Else”.
Użycie instrukcji „if-elif-else” pokazano w poniższym skrypcie. Od użytkownika pobierana jest liczba i sprawdzana z różnymi wartościami, aż do znalezienia dopasowania. Jeśli zostanie znalezione dopasowanie, drukowany jest odpowiedni komunikat. Jeśli nie zostanie znalezione żadne dopasowanie, drukowany jest komunikat domyślny.
#!/bin/bash#Pobierz wartość identyfikatora od użytkownika
Czytać -P 'Wprowadź swój numer seryjny:' seryjny
#Sprawdź wartość wejściową za pomocą instrukcji „if-elif-else”.
Jeśli [ $seryjny == „4523” ]
Następnie
Echo „Zostałeś wybrany do grupy A.”
Elif [ $serial == „8723” ]
Następnie
Echo „Zostałeś wybrany do grupy B.”
Elif [ $seryjny == „3412” ]
Następnie
Echo „Zostałeś wybrany do grupy C.”
w przeciwnym razie
Echo „Nie zostałeś wybrany” .
Być
Wyjście:
Po wykonaniu skryptu o wartości 8723 pojawiają się następujące dane wyjściowe:
Po wykonaniu skryptu o wartości 9078 pojawiają się następujące dane wyjściowe:
Użycie instrukcji „If” do sprawdzenia pustej zmiennej
Metodę sprawdzenia, czy zmienna jest pusta bez użycia instrukcji „if” pokazano w poniższym skrypcie. Aby wykonać to zadanie, w instrukcji „if” używana jest opcja „-z”.
#!/bin/bash#Pobierz wartość identyfikatora od użytkownika
Czytać -P 'Wprowadź swój numer seryjny:' seryjny
#Sprawdź, czy zmienna jest pusta, czy nie
Jeśli [ ! -z $serial ]
Następnie
#Sprawdź wartość wejściową za pomocą instrukcji „if-elif-else”.
Jeśli [ $serial == „690” ]
Następnie
Echo „Zostałeś wybrany do drużyny-1.”
Elif [ $serial == „450” ]
Następnie
Echo „Zostałeś wybrany do drużyny-2.”
w przeciwnym razie
Echo „Nie zostałeś wybrany” .
Być
w przeciwnym razie
Echo „Nie podano numeru seryjnego”.
Być
Wyjście :
Po wykonaniu skryptu o wartości 690 pojawia się następujący wynik:
Jeśli nie zostanie pobrana żadna wartość wejściowa, po wykonaniu skryptu pojawią się następujące dane wyjściowe:
Użycie instrukcji „If” z operatorami logicznymi
W instrukcji warunkowej Bash można używać trzech typów operatorów logicznych. Są to logiczne OR (||), logiczne AND (&&) i logiczne NIE (!). Wartość kodu jest pobierana od użytkownika. Jeśli wartość wejściowa nie jest pusta, wartość jest sprawdzana za pomocą dwóch wartości kodowych przy użyciu logicznego OR. Jeśli wartość pasuje do dowolnego kodu, drukowany jest odpowiedni komunikat. Jeśli nie zostanie znaleziony pasujący kod, drukowany jest komunikat domyślny.
#!/bin/bash#Odbierz kod kursu od użytkownika
Czytać -P 'Wpisz kod kursu:' kod
#Sprawdź, czy zmienna jest pusta, czy nie
Jeśli [ ! -z $kod ]
Następnie
#Sprawdź wartość wejściową za pomocą instrukcji „if-elif-else”.
Jeśli [ [ $kod == „CSE-106” || $kod == „CSE-108” ] ]
Następnie
Echo „Kurs CSE”.
Elif [ [ $kod == „BBA-203” || $kod == „BBA-202” ] ]
Następnie
Echo „Kurs BBA”.
w przeciwnym razie
Echo „Nieprawidłowy kod kursu.”
Być
w przeciwnym razie
Echo „Nie podano kodu kursu”.
Być
Wyjście :
Po wykonaniu skryptu z wartością wejściową „CSE-108” pojawiają się następujące dane wyjściowe:
Po wykonaniu skryptu z wartością wejściową „BBA-56” pojawiają się następujące dane wyjściowe:
Użycie zagnieżdżonych instrukcji „If”.
Kiedy warunek „if” jest używany wewnątrz innego warunku „if”, nazywa się to zagnieżdżoną instrukcją „if”. Sposób wykorzystania zagnieżdżonego „if” pokazano w poniższym skrypcie. Od użytkownika pobierane są dwie wartości znaku. Jeśli wartości wejściowe nie są puste, pierwszy warunek „if” sprawdza, czy wartość „$theory” jest większa lub równa 60, czy nie. Jeśli pierwszy warunek „if” zwróci „true”, drugi warunek „if” sprawdza, czy wartość „$lab” jest większa lub równa 50, czy nie. Jeśli drugi warunek „jeśli” również zwróci wartość „prawda”, zostanie wydrukowany komunikat o powodzeniu. W przeciwnym razie drukowany jest komunikat o błędzie.
#!/bin/bash#Zdaj egzamin z teorii
Czytać -P „Wprowadź znak teorii:” teoria
#Weź znak laboratoryjny
Czytać -P „Wprowadź znak laboratorium:” laboratorium
#Sprawdź, czy zmienne są puste, czy nie
Jeśli [ [ ! -z $teoria && ! -z $laboratorium ] ]
Następnie
#Sprawdź wartości wejściowe za pomocą zagnieżdżonej instrukcji „if”.
Jeśli [ $teoria -ge 60 ]
Następnie
Jeśli [ $laboratorium -ge pięćdziesiąt ]
Następnie
Echo 'Zdałaś.'
w przeciwnym razie
Echo 'Przegrałeś.'
Być
w przeciwnym razie
Echo 'Przegrałeś.'
Być
w przeciwnym razie
Echo „Teoria lub ocena laboratoryjna jest pusta”.
Być
Wyjście :
Jeśli obie lub jedna z wartości wejściowych jest pusta, pojawiają się następujące dane wyjściowe:
Poniższy wynik pojawi się, jeśli 78 zostanie przyjęte jako oceny z teorii, a 45 jako oceny z laboratorium. Tutaj drugi warunek „jeśli” zwraca „fałsz”:
Poniższy wynik pojawi się, jeśli 67 zostanie potraktowanych jako oceny z teorii, a 56 jako oceny z laboratorium. Tutaj oba warunki „jeśli” zwracają wartość „true”:
Poniższy wynik pojawi się, jeśli 50 zostanie przyjęte jako oceny z teorii, a 80 jako oceny z laboratorium. Tutaj pierwszy warunek „jeśli” zwraca „fałsz”:
Użycie instrukcji „If” do sprawdzenia istnienia pliku
Istnienie pliku można sprawdzić za pomocą skryptu bash na dwa sposoby. Jednym z nich jest użycie operatora „-f” z nawiasami „[]”. Innym jest użycie polecenia „test” i operatora „-f”. Pobierana jest nazwa pliku i sprawdzana jest jej obecność przy użyciu warunku „if” z operatorem „-f”. Następnie pobierana jest inna nazwa pliku i sprawdzamy istnienie pliku za pomocą instrukcji „if” z poleceniem „test” i operatorem „-f”.
#!/bin/bash#Weź nazwę pliku
Czytać -P „Wprowadź nazwę pliku:” fn1
#Sprawdź, czy plik istnieje, czy nie, bez użycia polecenia „test”.
Jeśli [ -F $fn1 ]
Następnie
Echo ' $fn1 plik istnieje.'
w przeciwnym razie
Echo ' $fn1 plik nie istnieje.'
Być
#Dodaj nową linię
Echo
#Wybierz inną nazwę pliku
Czytać -P „Wprowadź inną nazwę pliku:” fn2
#Sprawdź, czy plik istnieje, używając polecenia `test`
Jeśli test -F $fn2 ; Następnie
Echo ' $fn2 plik istnieje.'
#Sprawdź, czy plik jest pusty, czy nie, używając `test`
Jeśli test -z $fn2 ; Następnie
Echo ' $fn2 plik jest pusty.”
w przeciwnym razie
Echo ' $fn2 plik nie jest pusty.”
Być
w przeciwnym razie
Echo ' $fn2 plik nie istnieje.'
Być
Wyjście :
Poniższe dane wyjściowe pojawiają się po wykonaniu skryptu, przyjmując „test.txt” i „testing.txt” jako nazwy plików. Zgodnie z wynikami oba pliki istnieją w bieżącej lokalizacji, a plik „testing.txt” jest pusty:
Poniższe dane wyjściowe pojawiają się po wykonaniu skryptu, przyjmując „f1.txt” i „test.txt” jako nazwy plików. Zgodnie z wynikami plik „f1.txt” nie istnieje w bieżącej lokalizacji, a plik „test.txt” nie jest pusty:
Użycie instrukcji „If” do sprawdzenia istnienia katalogu
Istnienie katalogu można sprawdzić za pomocą skryptu Bash na dwa sposoby, podobnie jak plik. Jednym z nich jest użycie operatora „-d” z nawiasami „[]”. Innym jest użycie polecenia „test” i operatora „-d”. Pobierana jest nazwa katalogu i sprawdzane jest istnienie katalogu przy użyciu warunku „if” z operatorem „-d”. Następnie pobierana jest inna nazwa katalogu i sprawdzanie istnienia pliku za pomocą instrukcji „if” z poleceniem „test” i operatorem „-d”.
#!/bin/bash#Wybierz nazwę katalogu
Czytać -P „Wprowadź nazwę katalogu:” ty1
#Sprawdź, czy katalog istnieje, czy nie, bez użycia polecenia „test”.
Jeśli [ -D $kat1 ]
Następnie
Echo ' $kat1 katalog istnieje.”
w przeciwnym razie
Echo ' $kat1 katalog nie istnieje.”
Być
#Dodaj nową linię
Echo
#Wybierz inną nazwę katalogu
Czytać -P „Wprowadź inną nazwę katalogu:” reż.2
#Sprawdź, czy plik istnieje, używając polecenia `test`
Jeśli test -D $kat2
Następnie
Echo ' $kat2 katalog istnieje.”
w przeciwnym razie
Echo ' $kat2 katalog nie istnieje.”
Być
Wyjście :
Poniższe dane wyjściowe pojawiają się po wykonaniu skryptu z nazwami katalogów „temp” i „files”. Zgodnie z wynikami oba katalogi istnieją w bieżącej lokalizacji. Następnie wykonywana jest komenda „ls” w celu sprawdzenia zawartości katalogów:
Po wykonaniu skryptu z nazwami katalogów „testing” i „new” pojawiają się następujące dane wyjściowe. Zgodnie z wynikami oba katalogi nie istnieją w bieżącej lokalizacji. Następnie wynik polecenia „ls” pokazuje, że oba katalogi nie istnieją:
Użycie instrukcji „If” z wyrażeniem regularnym
Poniższy skrypt przedstawia metodę sprawdzania poprawności danych wejściowych za pomocą instrukcji „if” z wyrażeniem regularnym. W tym przypadku od użytkownika pobierane są dwie wartości wejściowe i zapisywane w zmiennych „$bookname” i „$bookprice”. Warunek „if” używany jest w skrypcie w celu sprawdzenia, czy zmienna „$bookname” zawiera wszystkie znaki alfabetu, a zmienna „$bookprice” zawiera liczbę.
#!/bin/bash#Pobierz od użytkownika nazwę i cenę książki
Echo -N „Wpisz tytuł książki:”
Czytać nazwa książki
Echo -N „Wpisz cenę książki:”
Czytać cena księgowa
#Sprawdź, czy nazwa książki zawiera tylko alfabet
Jeśli ! [ [ ' $nazwa książki ' =~ [ A-Za-z ] ] ] ; Następnie
Echo „Nazwa książki jest nieprawidłowa”.
w przeciwnym razie
Echo „Nazwa książki jest prawidłowa”.
Być
#Sprawdź, czy cena książki zawiera tylko cyfry
Jeśli ! [ [ ' $cena książki ' =~ [ 0 - 9 ] ] ] ; Następnie
Echo „Cena książki może zawierać tylko cyfrę”.
w przeciwnym razie
Echo „Cena książki jest ważna.”
Być
Wyjście :
Po wykonaniu skryptu pojawiają się następujące dane wyjściowe z wartościami wejściowymi „Programowanie w języku Bash” jako nazwą książki i 78 jako ceną książki:
Po wykonaniu skryptu pojawiają się następujące dane wyjściowe z wartościami wejściowymi 90 jako nazwą książki i „Bash” jako ceną książki:
Użycie stwierdzenia „przypadek”.
Instrukcja „case” jest alternatywą dla instrukcji „if-elif-else”, ale wszystkich zadań instrukcji „if-elif-else” nie można wykonać przy użyciu instrukcji „case”. Proste użycie instrukcji „case” pokazano w poniższym skrypcie. Wartość liczbowa jest pobierana od użytkownika jako wartość bieżącego miesiąca. Następnie drukowany jest odpowiedni miesiąc, jeśli w zestawieniu „case” zostanie znaleziona pasująca wartość. W przeciwnym razie drukowany jest komunikat domyślny.
#!/bin/bash#Przyjmij wartość bieżącego miesiąca w formie liczbowej
Czytać -P „Wpisz numer dzisiejszego miesiąca:” b_miesiąc
#Wydrukuj tekst przed wydrukowaniem nazwy miesiąca
Echo -N „Obecna nazwa miesiąca to”
#Sprawdź i wydrukuj pasującą nazwę miesiąca na podstawie wprowadzonych danych
sprawa $b_miesiąc W
1 | 01 ) Echo 'Styczeń.' ;;
2 | 02 ) Echo 'Luty.' ;;
3 | 03 ) Echo 'Marsz.' ;;
4 | 04 ) Echo 'Kwiecień.' ;;
5 | 05 ) Echo 'Móc.' ;;
6 | 06 ) Echo 'Czerwiec.' ;;
7 | 07 ) Echo 'Lipiec.' ;;
8 | 08 ) Echo 'Sierpień.' ;;
9 | 09 ) Echo 'Wrzesień.' ;;
10 ) Echo 'Październik.' ;;
jedenaście ) Echo 'Listopad.' ;;
12 ) Echo 'Grudzień.' ;;
* ) Echo 'nie znaleziono.' ;;
esac
Wyjście :
Po wykonaniu skryptu o wartości 6 pojawiają się następujące dane wyjściowe:
Po wykonaniu skryptu o wartości 09 pojawiają się następujące dane wyjściowe:
Po wykonaniu skryptu o wartości 14 pojawiają się następujące dane wyjściowe:
Wniosek
W 10 przykładach tego samouczka pokazano różne zastosowania logiki warunkowej przy użyciu instrukcji „if” i „case”. Koncepcja używania logiki warunkowej w Bash zostanie wyjaśniona nowym użytkownikom Basha po przeczytaniu tego samouczka.