Exemplu Bash If-Then-Else

Bash If Then Else Example



În această lecție, vom vedea cum putem folosi instrucțiunile If-Then-Else în scripturile de mediu Bash pe care le scriem. Instrucțiunile If-Then-Else sunt un instrument util pentru a oferi o modalitate de a defini calea de acțiune a unui script atunci când sunt îndeplinite unele condiții. Să vedem care este sintaxa pentru instrucțiunile If-Then-Else:

dacăUNELE-COMANDE;
atunciATUNCI COMANDE;
altcevaCOMANDE ALTE;
fi

În comanda de mai sus afișată, dacă SOME-COMMANDS este adevărat sau starea de returnare a acestuia este 0, THEN-COMMANDS vor fi executate. Dacă nu este cazul, se execută alte comenzi. În SOME-COMMANDS, facem de obicei unele comparații de șiruri sau comparații de valori sub formă de numere întregi. De asemenea, putem face o mulțime de operațiuni care implică fișiere. Să ne uităm la câteva exemple de comenzi primare care sunt utilizate în principal atunci când se lucrează cu condiții bazate pe fișiere:







Primar Sens
[ -la ] Returnează adevărat când există FILE.
[-b] Returnează adevărat când FILE există și este un fișier special de bloc.
[-c] Returnează adevărat când FILE există și este un fișier special pentru caractere.
[-d] Returnează adevărat când FILE există și este un director.
[ -Și ] Returnează adevărat când există FILE.
[-f] Returnează adevărat când FILE există și este un fișier obișnuit.
[-g] Returnează adevărat când FILE există și bitul său SGID este setat.
[-h] Returnează adevărat când FILE există și este o legătură simbolică.
[-k] Returnează adevărat când există FILE și bitul său lipicios este setat.
[-p] Returnează adevărat când FILE există și este o conductă numită (FIFO).
[-r] Returnează adevărat când FILE există și este lizibil.
[-s] Returnează adevărat când FILE există și are o dimensiune mai mare decât zero.
[-t] Returnează adevărat când descriptorul de fișier FD este deschis și se referă la un terminal.
[-u] Returnează adevărat când FILE există și bitul SUID (set user ID) este setat.
[-in] Returnează adevărat când FILE există și se poate scrie.
[-X] Returnează adevărat când FILE există și este executabil.
[-O] Returnează adevărat când FILE există și este deținut de ID-ul de utilizator efectiv.
[-G] Returnează adevărat când FILE există și este deținut de ID-ul grupului efectiv.
[-LA] Returnează adevărat când FILE există și este o legătură simbolică.
[-N] Returnează adevărat când FILE există și a fost modificat de la ultima citire.
[-S] Returnează adevărat când FILE există și este un socket.

THEN-COMMANDS și ELSE-COMMANDS pot fi orice operațiuni UNIX valide sau orice program executabil. Rețineți că atunci și fi comenzile sunt separate prin punct și virgulă, deoarece sunt considerate a fi elemente complet separate ale unui script.



If-Then-Else Exemplu simplu

Să începem lecția cu un exemplu foarte simplu cu declarații If-Then-Else.
Iată un exemplu de program:



Dacă Exemplu

Dacă Exemplu





Iată rezultatul pe care îl vedem când rulăm scriptul:

$. ifelse1.sh
Valorile sunt aceleași!
$

Folosind argumente din linia de comandă

Putem folosi, de asemenea, argumente din linia de comandă în scripturile noastre și putem folosi numărul de argumente și valorile în sine ca o condiție în instrucțiunea IF pe care o definim. Mai întâi definim un fișier text cu următorul conținut:



Numele meu este LinuxHint. Îmi plac serverele, în special cele Ubuntu. Sunt așa
terminale!

Acum, putem scrie un script care constată dacă un cuvânt apare sau nu într-un fișier text. Să definim acum scriptul:

aruncat „Găsirea a 1 USD în 2 USD”
prindere 1 $ 2 USD
dacă [ $? -născut 0 ]
atunci
aruncat „$ 1 nu a fost găsit în fișierul $ 2.”
altceva
aruncat „$ 1 găsit în fișierul $ 2.”
fi
aruncat „Scriptul a fost finalizat”.

Acest script este foarte dinamic. Consideră cuvântul de găsit și fișierul de căutat din linia de comandă. Acum suntem gata să rulăm scriptul nostru:

. ifelse2.sh love hello.txt

Vom vedea o ieșire precum:

Găsirea iubiriiînsalut.txt
dragoste găsităîn fişiersalut.txt.
Script finalizat.

Verificarea numărului de argumente din linia de comandă

În cadrul unei instrucțiuni IF, putem verifica chiar câte argumente din linia de comandă au fost transmise comenzii, astfel încât să putem acționa la fel:

numara=$ #
dacă [ ! $ conta -gt 1 ]
atunci
aruncat „Nu sunt suficiente argumente”
altceva
aruncat 'Loc de muncă bun!'
fi

Să rulăm acest script acum, vom vedea următoarea ieșire:

Argumente de linie de comandă

Argumente de linie de comandă

Declarații If-Then-Elif-Else

De asemenea, putem avea mai multe instrucțiuni IF în același bloc pentru a restrânge calea de decizie pe care o ia programul nostru pentru a executa comenzile definite de noi. Iată sintaxa pentru a defini mai multe instrucțiuni IF în scripturile noastre:

dacăCOMANDE DE TEST;
atunci
COMANDĂ DE REZULTAT;
elif
ALTE COMANDE;
atunci
ALTE COMANDE DE REZULTATE;
altceva
COMANDE ALTERNATE;
fi

Acest lucru pare destul de familiar și ușor de urmărit, de asemenea. Să definim un exemplu simplu pentru a stabili cum funcționează arborele:

numara=$ #
dacă [ $ conta -eq 1 ]
atunci
aruncat - S-a găsit un singur argument.
elif [ $ conta -eq 2 ]
atunci
aruncat - Mai bine, s-au găsit două argumente.
altceva
aruncat „Bună treabă, s-au găsit multe argumente!”
fi

Iată ce primim înapoi cu această comandă:

Dacă Then Elif Else exemplu

Dacă apoi Elif Else exemplu

Folosirea garniturilor

Declarațiile IF-ELSE sunt utile atunci când aveți o listă mare de opțiuni pe care trebuie să le decideți. Dar, în cazul în care doriți să efectuați o acțiune numai în câteva cazuri de potrivire exactă cu rezultatul, putem folosi instrucțiuni CASE și în scripturile Bash. Sintaxa sa arată ca:

cazEXPRESIEînCAZUL 1)COMANDE DE EXECUTAT;
CAZ2)COMANDE DE EXECUTAT;
CAZ2)COMANDE DE EXECUTAT;
...)COMANDE DE EXECUTAT;
*)COMANDE DE EXECUTAT;
esac

Ultimul caz cu * acționează ca caz implicit și va fi executat atunci când niciunul dintre cazurile definite mai sus nu se potrivește.

Să construim rapid un exemplu simplu folosind instrucțiunile CASE:

caz „1 $” în
1)
aruncat „Valoarea este 1.”
;;
2)
aruncat „Valoarea este 2.”
;;
3)
aruncat „Valoarea este 3.”
;;
*)
aruncat „A trecut altă valoare.”
esac

Fiecare declarație CASE este terminată de ;; (semne de punct și virgulă duble). Iată ce primim înapoi cu această comandă:

Exemplu CASE

Exemplu CASE

Concluzie

În această lecție, ne-am uitat la modul în care putem folosi instrucțiunile IF-ELSE, IF-THEN-ELIF și CASE în scripturile Bash pe care le definim pentru a întreprinde acțiuni specifice pe baza valorilor care există în programele noastre sau trecute de utilizator utilizând pozițional parametrii.