în acest tutorial, vă vom ghida prin elementele de bază ale Declarației Bash if și vă vom arăta cum să o utilizați în scripturile shell.luarea deciziilor este unul dintre cele mai fundamentale concepte ale programării pe calculator. Ca în orice alt limbaj de programare, if, if..else, if..elif..else și imbricate if declarații în Bash poate fi utilizat pentru a executa cod bazat pe o anumită condiție.,
dacă declarația #
Bash if Condiționalele pot avea diferite forme. Cele mai de bază if declarație are următoarea formă:
if TEST-COMMANDthen STATEMENTSfi
if declarație începe cu if cuvânt cheie urmat de expresie condițională și then cuvinte cheie. Declarația se încheie cu cuvântul cheiefi.,
TEST-COMMAND se evaluează la True, STATEMENTS executat. Dacă TEST-COMMAND livrare False, nimic nu se întâmplă, STATEMENTS devine ignorat.în general ,este o practică bună să indentați întotdeauna codul și să separați blocurile de cod cu linii goale. Cei mai mulți oameni aleg să utilizeze fie 4-spațiu sau 2-spațiu indentare. Indentările și liniile goale fac Codul mai lizibil și mai organizat.,
Să ne uităm la următorul exemplu de script care verifică dacă un număr dat este mai mare decât 10:
#!/bin/bashecho -n "Enter a number: "read VARif ]then echo "The variable is greater than 10."fi
Memorați codul într-un fișier, și rulați-l din linia de comandă:
bash test.sh
script-ul vă va solicita să introduceți un număr. Dacă, de exemplu, introduceți 15, test comanda va evalua la true pentru că 15 este mai mare decât 10, iar echo comandă în interiorul then clauza va fi executat.
The variable is greater than 10.
dacă..,Declarația altceva #
Bash if..else declarație are următoarea formă:
if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi
TEST-COMMAND se evaluează la True, STATEMENTS1 va fi executat. În caz contrar, dacă TEST-COMMAND livrare False, STATEMENTS2 va fi executat. Puteți avea o singură clauză else în declarație.,
să adăugăm o clauzăelse la scriptul de exemplu anterior:
dacă rulați codul și introduceți un număr, scriptul va imprima un mesaj diferit în funcție de dacă numărul este mai mare sau mai mic / egal cu 10.
dacă..elif..Declarația altceva #
Bash if..elif..else declarație are următoarea formă:
if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi
TEST-COMMAND1 se evaluează la True, STATEMENTS1 va fi executat., Dacă TEST-COMMAND2 se evaluează la True, STATEMENTS2 va fi executat. Dacă niciuna dintre comenzile de testare nu evaluează la True, STATEMENTS2 este executată.
puteți avea una sau mai multe clauze elif în declarație. Clauza else este opțională.
condițiile sunt evaluate secvențial., O dată o condiție returnează True celelalte condiții nu sunt îndeplinite și program de control se mută la sfârșitul if declarații.
Să adăugați un elif clauze anterioare script:
Imbricate dacă Declarațiile #
Bash vă permite să cuibul if declarații în termen de if declarații. Puteți plasa mai multe if declarație într-o altă if declarație.,următorul script vă va solicita să introduceți trei numere și va imprima cel mai mare număr dintre cele trei numere.
Aici este cum de iesire va arata astfel:
Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
case declarație în loc imbricate if declarații.mai Multe Condiții #
logic OR și AND operatori vă permit să utilizați mai multe condiții în if declarații.,iată o altă versiune a scriptului pentru a imprima cel mai mare număr dintre cele trei numere. În această versiune, în loc de imbricate if declarații, suntem folosind logic AND (&&) operator.
Test Operatorii #
În Bash, test comanda ia una din următoarele sintaxa forme:
test EXPRESSION]
Pentru a face script-ul portabil, prefera folosind vechiul test [ comanda care este disponibil pe toate POSIX scoici., Noua versiune imbunatatita a test comanda [[ (duble paranteze) este susținută pe cele mai moderne sisteme de Bash, Zsh, și Ksh ca shell implicit.pentru a anula expresia testului, utilizați operatorul logic NOT(!). Când comparați șiruri de caractere, utilizați întotdeauna ghilimele simple sau duble pentru a evita problemele de divizare a cuvintelor și globare.,
mai Jos sunt unele dintre cele mai frecvent utilizate de operatorii:
-
-nVAR– Adevărat dacă lungimeaVAReste mai mare decât zero. -
-zVAR– Adevărat dacăVAReste gol. -
STRING1 = STRING2– Adevărat dacăSTRING1șiSTRING2sunt egale. -
STRING1 != STRING2– Adevărat dacăSTRING1șiSTRING2nu sunt egale., -
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– Adevărat dacăFILEexistă și este un director. -
-eFILE– Adevărat dacăFILEexistă și este un fișier, indiferent de tip (nod, director, socket, etc.). -
-fFILE– Adevărat dacăFILEexistă și este un fișier obișnuit (nu un director sau dispozitiv).,
Concluzie #
if, if..else și if..elif..else situațiilor permite să controlați fluxul de Bash script executare prin evaluarea condițiile date.