w tym tutorialu przeprowadzimy Cię przez podstawy Bash statement i pokażemy, jak go używać w skryptach powłoki.

podejmowanie decyzji jest jednym z najbardziej podstawowych pojęć programowania komputerowego. Podobnie jak w każdym innym języku programowania, if, if..else, if..elif..else I zagnieżdżone if instrukcje w Bash mogą być używane do wykonywania kodu na podstawie określonego warunku.,

if Statement #

Bash conditionals mogą mieć różne formy. Najbardziej podstawoweif wyrażenie ma następującą postać:

if TEST-COMMANDthen STATEMENTSfi

if wyrażenie rozpoczyna się od słowa kluczowegoif, po którym następuje wyrażenie warunkowe ithen słowo kluczowe. Polecenie kończy się słowem kluczowym fi.,

JeśliTEST-COMMAND przetworzy się naTrue, zostanie wykonanySTATEMENTS. Jeśli TEST-COMMAND zwraca False, nic się nie dzieje, STATEMENTS zostanie zignorowany.

ogólnie rzecz biorąc, dobrą praktyką jest zawsze wcinanie kodu i oddzielanie bloków kodu pustymi liniami. Większość ludzi decyduje się na użycie 4-przestrzeni lub 2-przestrzeni wcięcia. Wcięcia i puste linie sprawiają, że kod jest bardziej czytelny i uporządkowany.,

spójrzmy na poniższy przykładowy skrypt, który sprawdza, czy dana liczba jest większa niż 10:

#!/bin/bashecho -n "Enter a number: "read VARif ]then echo "The variable is greater than 10."fi

Zapisz kod w pliku i uruchom go z linii poleceń:

bash test.sh

skrypt poprosi Cię o wprowadzenie liczby. Jeśli, na przykład, wprowadzisz 15, polecenie test zostanie ocenione do trueponieważ 15 jest większe niż 10, A polecenieechowewnątrz klauzulithen zostanie wykonane.

The variable is greater than 10.

if..,else Instrukcja #

Instrukcja Bash if..else ma następującą postać:

if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi

Jeśli TEST-COMMAND ocenia się na True, zostanie uruchomiony STATEMENTS1. W przeciwnym razie, jeśli TEST-COMMAND zwróci False, zostanie wykonany STATEMENTS2. Możesz mieć tylko jedną klauzulę else w oświadczeniu.,

dodajmy klauzulęelse do poprzedniego przykładowego skryptu:

jeśli uruchomisz kod i podasz liczbę, skrypt wyświetli inny komunikat w zależności od tego, czy liczba jest większa czy mniejsza / równa 10.

jeśli..elif..else Instrukcja #

Instrukcja Bash if..elif..else ma następującą postać:

if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi

Jeśli TEST-COMMAND1 przekształca się w True, zostanie uruchomiony STATEMENTS1., Jeśli TEST-COMMAND2 przetworzy się do True, zostanie wykonany STATEMENTS2. Jeśli żadne z poleceń testowych nie zostanie wykonane True, zostanie wykonane STATEMENTS2.

możesz mieć jedną lub więcej elif klauzule w oświadczeniu. Klauzula else jest opcjonalna.

warunki są oceniane kolejno., Po zwróceniu warunku True pozostałe warunki nie są wykonywane i kontrola programu przechodzi na koniec instrukcji .

dodajmyelifklauzulę do poprzedniego skryptu:

zagnieżdżone if Statements #

Bash pozwala zagnieżdżaćif statements wewnątrzif statements. Możesz umieścić wiele instrukcji if wewnątrz innej instrukcji if.,

poniższy skrypt wyświetli monit o wprowadzenie trzech liczb i wyświetli największą liczbę spośród tych trzech liczb.

oto jak będzie wyglądać wyjście:

Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
ogólnie bardziej wydajne jest użycie instrukcjicasezamiast zagnieżdżonych.

wiele warunków #

logiczne ORI ANDoperatory pozwalają na użycie wielu warunków w poleceniach .,

oto kolejna wersja skryptu do drukowania największej liczby spośród trzech liczb. W tej wersji zamiast zagnieżdżonych poleceń używamy logicznego operatora AND (&&).

operatory testowe #

w Bash polecenie test przyjmuje jedną z następujących form składni:

test EXPRESSION]

aby skrypt był przenośny, preferuj użycie starego testu [ polecenie dostępne we wszystkich powłokach POSIX., Nowa, ulepszona wersja polecenia test [[ (podwójne nawiasy) jest obsługiwana w większości nowoczesnych systemów przy użyciu Bash, Zsh i Ksh jako domyślnej powłoki.

aby zanegować wyrażenie testowe, użyj logicznego operatora NOT (!). Porównując ciągi znaków, Zawsze używaj pojedynczych lub podwójnych cudzysłowów, aby uniknąć problemów z dzieleniem i globalizacją słów.,

Poniżej znajdują się niektóre z najczęściej używanych operatorów:

  • -nVAR – True, jeśli długośćVAR jest większa niż zero.
  • -zVAR – PRAWDA, jeśliVAR jest pusty.
  • STRING1 = STRING2 – PRAWDA, jeśliSTRING1 ISTRING2 są równe.
  • STRING1 != STRING2 – PRAWDA, jeśliSTRING1 ISTRING2 nie są sobie równe.,
  • INTEGER1 -eq INTEGER2 – True if INTEGER1 and INTEGER2 are equal.
  • INTEGER1 -gt INTEGER2 – True if INTEGER1 is greater than INTEGER2.
  • INTEGER1 -lt INTEGER2 – True if INTEGER1 is less than INTEGER2.
  • INTEGER1 -ge INTEGER2 – True if INTEGER1 is equal or greater than INTEGER2.
  • INTEGER1 -le INTEGER2 – True if INTEGER1 is equal or less than INTEGER2.,
  • -h FILE – True if the FILE exists and is a symbolic link.
  • -r FILE – True if the FILE exists and is readable.
  • -w FILE – True if the FILE exists and is writable.
  • -x FILE – True if the FILE exists and is executable.,
  • -dFILE – True, jeśliFILE istnieje i jest katalogiem.
  • -eFILE – PRAWDA, jeśliFILE istnieje i jest plikiem, niezależnie od typu (węzeł, katalog, Gniazdo itp.).
  • -fFILE – PRAWDA, jeśliFILE istnieje i jest zwykłym plikiem (Nie katalogiem lub urządzeniem).,

podsumowanie #

,if..else Iif..elif..else pozwalają kontrolować przepływ wykonywania skryptu Bash przez ocenę podanych warunków.