î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.
în General, este mai eficient de a utiliza 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:

  • -n VAR – Adevărat dacă lungimea VAR este mai mare decât zero.
  • -z VAR – Adevărat dacă VAR este gol.
  • STRING1 = STRING2 – Adevărat dacă STRING1 și STRING2 sunt egale.
  • STRING1 != STRING2 – Adevărat dacă STRING1 și STRING2 nu sunt egale.,
  • 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.,
  • -d FILE – Adevărat dacă FILE există și este un director.
  • -e FILE – Adevărat dacă FILE există și este un fișier, indiferent de tip (nod, director, socket, etc.).
  • -f FILE – Adevărat dacă FILE există ș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.