î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:
-
-n
VAR
– Adevărat dacă lungimeaVAR
este mai mare decât zero. -
-z
VAR
– Adevărat dacăVAR
este gol. -
STRING1 = STRING2
– Adevărat dacăSTRING1
șiSTRING2
sunt egale. -
STRING1 != STRING2
– Adevărat dacăSTRING1
șiSTRING2
nu sunt egale., -
INTEGER1 -eq INTEGER2
– True ifINTEGER1
andINTEGER2
are equal. -
INTEGER1 -gt INTEGER2
– True ifINTEGER1
is greater thanINTEGER2
. -
INTEGER1 -lt INTEGER2
– True ifINTEGER1
is less thanINTEGER2
. -
INTEGER1 -ge INTEGER2
– True ifINTEGER1
is equal or greater than INTEGER2. -
INTEGER1 -le INTEGER2
– True ifINTEGER1
is equal or less thanINTEGER2
., -
-h
FILE
– True if theFILE
exists and is a symbolic link. -
-r
FILE
– True if theFILE
exists and is readable. -
-w
FILE
– True if theFILE
exists and is writable. -
-x
FILE
– True if theFILE
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.