Bash: Condiții (dacă-atunci-altfel)

Bună 

De data aceasta vă voi arăta cum să creați un script cu condiția în Bash, care s-a tradus este:

Dacă X-ul pe care îl doriți este realizat, se face acțiunea Y, dacă nu este realizată, atunci se face o altă acțiune.

Explicația nu este simplă 

Acum, m-am gândit câteva minute la un exemplu de folosit în acest tutorial, mi-a apărut următoarea dilemă / problemă / situație:

Suntem în rețeaua companiei noastre și vrem să știm dacă computerul X este conectat la rețea. Pentru aceasta facem un scenariu ce va face ping către acel computer și dacă se află într-o rețea (adică dacă returnează ping) ne va spune că DA, este în rețea, altfel (adică nu este în rețea) ne va spune că NU este în rețea.

Odată ce acest lucru este făcut, acum voi explica cum se face o buclă cu condițiile 

Iată codul:

ping -c 1 DIRECCION-IP
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi

Nu vă faceți griji, voi explica acest lucru în detaliu 

ping este comanda pe care o vom folosi și ne va spune dacă acel PC se află în rețea. Pentru a spune ce PC dorim să verificăm dacă este sau nu în rețea, trebuie să ne schimbăm ADRESĂ IP în mod evident, adresa IP a computerului pe care dorim să o verificăm.

După cum puteți vedea, am pus «-C 1«, Ceea ce este necesar pentru noi. Când facem ping pe un computer, această acțiune nu se oprește (ping-ul) până nu ne apăsăm pe noi înșine [Ctrl] + [C], așa că punând «-C 1»Vă spunem să faceți o singură verificare (o singură încercare de ping) și nicio alta, aceasta o va face să se oprească instantaneu, adică ... va verifica dacă computerul este în rețea o singură dată.

Dacă aveți îndoieli cu privire la acest lucru, nu vă jenați... spuneți asta și voi fi FOARTE bucuros să vă explic din nou 

Acum vine ciclul, pentru că ceea ce tocmai am explicat nu este altceva decât o comandă/acțiune normală 

if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi

Ca să înțelegeți acest lucru, vă voi explica un detaliu extrem de important al lui Bash 

Cei mai cunoscători pe subiect ar putea să mă spună greșit sau ceva de genul ăsta, dar hei, scriu asta pentru începători sau mai puțin experți, atâta timp cât ei înțeleg atunci grozav 

Se întâmplă ca în Bash este ceva de genul 0 y 1, adică fie că ești în viață, fie că ești mort, când se execută o comandă sau o acțiune: Fie executat bine Nici o problema (1), sau au fost unele problemă sau eroare (0).

Noi am realizat

Dacă ce trimitem să facem (în acest caz: ping -c 1 ADRESA IP) nu a dat o eroare și a avut succes, deci va returna valoarea: 1 . În caz contrar, și dacă acțiunea (adică ping-ul) nu a avut succes, va returna valoarea 0.

 Și, în cele din urmă, ceea ce înseamnă codul de mai sus este următorul:

Dacă valoarea 0 a fost returnată atunci

Afișați textul: «Nu în rețea»

În caz contrar (și NU 0, dar 1 este returnat)

Afișați textul: «Dacă este în rețea«

Acest lucru pe care tocmai ți l-am explicat, ne va servi în viitor pentru multe lucruri, pentru că este foarte util să poți spune că dacă acțiunea X a dat o eroare, acționează Y și, în cazul în care acțiunea X nu a dat o eroare, apoi faceți acțiunea Z.

Știu că unii s-ar putea confunda puțin, așa că am încercat să-l explic în mai multe moduri diferite, încercând să îi fac pe toți să înțeleagă într-un fel sau altul. În cazul în care cineva este lăsat la îndoială, anunțați-mă.

Acum, să facem scenariul nostru 

Trebuie să urmăm pașii din acest tutorial: Bash: Cum se realizează un script executabil

Apoi să copiem următorul cod în acel fișier (script.sh), iar la final să spunem «ieşire"(Fără ghilimele):

ping -c 1 DIRECCION-IP
if [ $? -ne 0 ]; then
echo "No está en red"
else
echo "Sí está en red"
fi

Ar trebui să arate așa (nu uitați că trebuie să fi schimbat adresa IP la adresa dorită):

Aici puteți vedea scriptul care rulează:

% COD 1%

După cum puteți vedea, în cele din urmă el ne spune «Da, este în rețea» 

Important este că ei înțeleg acest lucru despre condiții, așa că vă las un alt cod pentru a-l explica din nou, dar dintr-un alt punct de vedere.

read "texto"
if [ "$texto" = "3" ]; then
echo "Correcto"
else
echo "Incorrecto"
fi

Ceea ce înseamnă acest lucru este simplu, las explicația rând cu rând:

Prima linie: Ceea ce scriem, aceasta va fi valoarea variabilei «text"(Fără ghilimele).

A doua linie: Verificați dacă conținutul variabilei (ceea ce tocmai am scris) este 3.

Prima linie: În caz de a fi 3, ne va arăta textul «Corectează"(Fără ghilimele).

A 4-a linie: În caz contrar (adică în cazul în care nu am scris 3).

A 5-a linie: Ne va arăta textul «Incorect"(Fără ghilimele).

A 6-a linie: Sfârșitul stării.

Așa cum au reușit să realizeze, dacă punem ecou și apoi între ghilimele duble («) un text, acest lucru va face ca acel text să fie afișat în terminal. Adică, dacă punem:

echo "esto es una prueba"

Ne va arăta textul din terminal: acesta este un test

Dar revenind la acest al doilea exemplu, vă voi arăta utilitatea (și execuția) acestui al doilea script cu ceva FOARTE simplu ... tipicul «cât este 1 + 2?«

Vă las codul scriptului complet:

#!/bin/bash
# -*- ENCODING: UTF-8 -*-
echo "¿Cuánto es 1 + 2?"
read "texto"
if [ "$texto" = "3" ]; then
echo "Correcto"
else
echo "Incorrecto"
fi
exit

Iată cum funcționează scenariul:

% COD 2%

Și bine ... nimic mai mult de adăugat.

Acesta este ceva elementar, simplu da, dar tot am încercat să explic cât mai bine, pentru că nu toată lumea are suflet de programator și de multe ori trebuie să facem scripturi ca acestea (sau asemănătoare), în orice caz eu sper că acest articol vă va fi de folos cuiva 

Dacă aveți îndoieli, întrebări, reclamații sau sugestii, vă rugăm să le lăsați aici, le voi răspunde cu plăcere și astfel, învățăm cu toții mai multe 

În ceea ce priveşte