Jak opanować logikę warunkową w Bash

Jak Opanowac Logike Warunkowa W Bash



Stosowanie logiki warunkowej jest bardzo istotną częścią każdego języka programowania. Logikę warunkową można zaimplementować w Bash na różne sposoby, aby rozwiązać problemy programistyczne. W tym samouczku przedstawiono metody używania logiki warunkowej w języku Bash poprzez różne typy instrukcji „if” i „case” w celu porównania wartości łańcuchowych i liczbowych, sprawdzenia zawartości zmiennej, sprawdzenia istnienia pliku lub katalogu itp. .

Lista treści:

  1. Użycie instrukcji „If”.
  2. Użycie instrukcji „If-Else”.
  3. Użycie instrukcji „If-Elif-Else”.
  4. Użycie instrukcji „If” do sprawdzenia pustej zmiennej
  5. Użycie instrukcji „If” z operatorem logicznym
  6. Użycie zagnieżdżonych instrukcji „If”.
  7. Użycie instrukcji „If” do sprawdzenia istnienia pliku
  8. Użycie instrukcji „If” do sprawdzenia istnienia katalogu
  9. Użycie instrukcji „If” z wyrażeniem regularnym
  10. 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:



  p1





Idź na górę

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:

  p2-1

Jeśli jako dane wejściowe zostanie przyjęty „niebieski”, po wykonaniu poprzedniego skryptu pojawią się następujące dane wyjściowe:

  p2-2

Idź na górę

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:

  p3-1

Po wykonaniu skryptu o wartości 9078 pojawiają się następujące dane wyjściowe:

  p3-2

Idź na górę

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:

  p4-1

Jeśli nie zostanie pobrana żadna wartość wejściowa, po wykonaniu skryptu pojawią się następujące dane wyjściowe:

  p4-2

Idź na górę

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:

  p5-1

Po wykonaniu skryptu z wartością wejściową „BBA-56” pojawiają się następujące dane wyjściowe:

  p5-2

Idź na górę

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:

  p6-1

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”:

  str. 6-2

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”:

  str. 6-3

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”:

  str. 6-4

Idź na górę

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:

  p7-1

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:

  p7-2

Idź na górę

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:

  p8-1

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ą:

  p8-2

Idź na górę

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:

  p9-1

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:

  p9-2

Idź na górę

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:

  s. 10-1

Po wykonaniu skryptu o wartości 09 pojawiają się następujące dane wyjściowe:


  s. 10-2

Po wykonaniu skryptu o wartości 14 pojawiają się następujące dane wyjściowe:

  s. 10-3

Idź na górę

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.