Declarația Bash „dacă altfel”: tutorial și exemple

Folosind instrucțiunea if...else în Bash pentru executarea condiționată a codului.

Bash (Bourne Again Shell) este un prompt de comandă shell și un limbaj de scripting în sistemele de operare GNU/Linux. Este shell-ul implicit pentru majoritatea distribuțiilor Linux.

Declarațiile condiționate sunt vitale în orice limbaj de programare, atât compilate, cât și scriptate. Ele permit utilizatorului să execute o bucată de cod bazată pe o condiție predefinită, care este unul dintre fundamentele logicii de programare. În acest articol, vom învăța cum să folosim daca...altfel declarație condiționată în Bash.

Introducere

The daca...altfel declarația din Bash permite utilizatorului să manipuleze fluxul de cod în funcție de condiții. Utilizatorul poate specifica blocuri de cod separate pentru a fi executate, dintre care doar unul va fi executat în final în timpul rulării, pe baza condiției corespunzătoare care este îndeplinită.

Rețineți că, pot fi specificate mai mult de două condiții, pentru care elif poate fi folosită declarația. Utilizatorul poate oferi orice număr de condiții folosind elif, și în sfârșit o condiție implicită folosind altfel bloc. Să vedem mai multe despre asta în sintaxa și exemplele de mai jos.

Sintaxă generală

Sintaxa generală pentru daca...altfel declarația în Bash este:

daca atunci  altfel  fi

Aici, dacă satisface, adică dacă returnează 0 (succes), atunci blocul de cod 1 este executat. Dacă condiția nu returnează 0, adică returnează o stare de eșec, atunci blocul de cod 2 este executat. The daca...altfel blocul se termină cu a fi afirmație.

Pentru mai multe blocuri care corespund mai multor condiții,elif este folosit:

daca atunci  elif atunci  elif atunci  ... ... altfel  fi

Aici, condițiile sunt verificate în ordine și este executat blocul de cod al primei condiții care returnează starea 0 (succes). De exemplu. dacă returnează starea diferită de zero (eșec), apoi este bifat. Dacă returnează starea 0, este executat. După aceasta, alte condiții nu sunt verificate și execuția codului continuă până la codul de după fi afirmație.

Dacă niciuna dintre condiții nu returnează starea 0, în blocul else se execută. Rețineți că blocul else este opțional. Dacă nu este îndeplinită nicio condiție, precum și nu altfel bloc este specificat, niciun bloc de cod condiționat nu va rula, iar execuția codului va continua până la cod după fi declarație, așa cum se arată în graficul de mai jos.

Rețineți că atunci declarația trebuie folosită numai după dacă și elif declarații și nu sunt necesare după altfel afirmație.

Exemple

Pentru a executa un bloc de cod dacă o variabilă are o anumită valoare:

x=0 dacă [ $x -eq 0 ] atunci echo „Valoarea lui X este 0” altfel echo „Valoarea lui X nu este 0” fi

Pentru a verifica mai multe valori:

x=2 if [ $x -eq 0 ] then echo "Valoarea lui X este 0" elif [ $x -eq 1 ] then echo "Valoarea lui X este 1" elif [ $x -eq 2 ] apoi echo "Valoarea lui X este 2" altfel echo "Valoarea lui X nu este 0" fi

Condițiile pot fi orice comandă Linux. Blocul de cod corespunzător se va executa dacă comanda rulează cu succes.

dacă npm -v atunci echo "NPM prezent în sistem" altfel sudo apt install npm fi

În exemplul de mai sus, din moment ce npm nu a fost instalat în sistem, comanda npm -v a returnat o stare diferită de zero. Prin urmare, execuția codului a intrat în altfel bloc, unde instalăm npm folosind apt manager de pachete. După cum putem vedea, mi-a cerut să introduc parola și am început instalarea npm.

Putem cuibari și altul daca...altfel bloc în interiorul unui dacă, altfel sau elif bloc:

x=0 y=1 dacă [ $x -eq 0 ] atunci echo "X este 0" dacă [ $y -eq 1 ] atunci echo "Y este 1" altfel echo "Y nu este 1" fi altfel echo "X este nu 0" fi

Acest lucru este util atunci când un set separat de condiții trebuie verificat odată ce o condiție inițială este îndeplinită.

De exemplu, următorul cod încearcă să instaleze un software de server web:

dacă nginx -v atunci echo „NGINX este deja instalat”. altfel, dacă sudo apt install nginx, atunci ecou „Instalare NGINX reușită”. elif sudo apt install apache2 then echo "APACHE2 installation success." else echo „Nu se poate instala niciun software web”. fi

Codul verifică mai întâi dacă Nginx este deja instalat în sistem. Dacă este, afișează doar un mesaj și iese. Dacă nu este, încearcă să instaleze Nginx.

Dacă din anumite motive, Nginx nu a putut fi instalat în sistem din pachet, încearcă să instaleze Apache2. Dacă chiar și Apache2 dă eroare în timpul instalării, se iese afișând un mesaj că nu a putut fi instalat niciun software.

Într-un mod similar, un bloc imbricat poate fi utilizat în interiorul unui elif bloc de asemenea.

Executarea daca...altfel: Scripturi și linie de comandă

Similar cu orice cod Bash, daca...altfel instrucțiunea poate fi utilizată în shell Bash direct sau dintr-un fișier script shell executabil. Odată ce interpretul Bash găsește un dacă, altfel sau elif declarație, continuă shell-ul pentru a permite utilizatorului să intre în blocul de cod.

De asemenea, utilizatorul poate salva acest cod într-un fișier script și poate executa fișierul script.

The #!/bin/bash la început specifică interpretul care urmează să fie utilizat atunci când fișierul este executat. Deși Bash este cel mai des folosit shell în zilele noastre, unii utilizatori preferă shell-uri precum zsh, care ar trebui specificate în locul bash la începutul acestui fișier.

Pentru a acorda permisiuni de execuție pentru acest fișier, rulați:

chmod +x test.sh

În cele din urmă, pentru a executa fișierul, rulați:

./test.sh

Concluzie

Similar oricărui limbaj de programare, daca...altfel declarația este o caracteristică fundamentală a lui Bash. Învățarea utilizării acestuia este foarte importantă în scrierea scripturilor de bază, precum și a celor avansate.