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.
casezamiast 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śćVARjest większa niż zero. -
-zVAR– PRAWDA, jeśliVARjest pusty. -
STRING1 = STRING2– PRAWDA, jeśliSTRING1ISTRING2są równe. -
STRING1 != STRING2– PRAWDA, jeśliSTRING1ISTRING2nie są sobie równe., -
INTEGER1 -eq INTEGER2– True ifINTEGER1andINTEGER2are equal. -
INTEGER1 -gt INTEGER2– True ifINTEGER1is greater thanINTEGER2. -
INTEGER1 -lt INTEGER2– True ifINTEGER1is less thanINTEGER2. -
INTEGER1 -ge INTEGER2– True ifINTEGER1is equal or greater than INTEGER2. -
INTEGER1 -le INTEGER2– True ifINTEGER1is equal or less thanINTEGER2., -
-hFILE– True if theFILEexists and is a symbolic link. -
-rFILE– True if theFILEexists and is readable. -
-wFILE– True if theFILEexists and is writable. -
-xFILE– True if theFILEexists and is executable., -
-dFILE– True, jeśliFILEistnieje i jest katalogiem. -
-eFILE– PRAWDA, jeśliFILEistnieje i jest plikiem, niezależnie od typu (węzeł, katalog, Gniazdo itp.). -
-fFILE– PRAWDA, jeśliFILEistnieje 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.