Ghid de incepatori pentru BASH - compararea lucrurilor

01 din 08

Ghid de incepatori pentru BASH - compararea lucrurilor

BASH Tutorial - compararea sirurilor.

În partea anterioară a tutorialului BASH am analizat declarațiile condiționate .

Acest ghid a fost foarte lung, dar într-adevăr a arătat doar cum să controleze fluxul de logică. Acest ghid prezintă diferitele moduri în care puteți compara variabilele.

Imaginea de mai sus arată primul exemplu din ghidul săptămânii:

#! / bin / bash

nume1 = "gary"
name2 = "bob"

dacă ["$ name1" = "$ name2"]
apoi
echo "numele se potrivesc"
altfel
echo "numele nu se potrivesc"
Fi


În scriptul de mai sus am definit două variabile numite name1 și name2 și le-am atribuit valorile "gary" și "bob". Întrucât variabilele sunt cuprinse între ghilimele, ele sunt numite variabile de șir care devin mai relevante pe măsură ce tutorialul continuă.

Tot scriptul face este compararea valorii $ name1 și $ name2 și dacă se potrivesc ieșirea șirul "names match" și dacă acestea nu trimit stringul "numele nu se potrivesc".

Marcajele în jurul variabilelor $ name1 și $ name2 sunt importante deoarece, în cazul în care valoarea acestora nu a fost stabilită, scenariul va continua să funcționeze.

De exemplu, dacă $ name1 nu a fost setat niciodată, atunci ați compară "" cu "bob". Fără ghilimele, ați fi lăsat cu = "bob" care în mod evident nu reușește.

De asemenea, puteți folosi notația! = Pentru a defini nu este egală cu următoarea:

dacă ["$ name1"! = "$ name2"]

02 din 08

Ghid de incepatori pentru BASH - Compararea sirurilor

BASH Tutorial - compararea sirurilor.

În exemplul de mai sus, testul compară aceleași două șiruri și întreabă dacă Gary vine înaintea bob-ului în alfabet?

În mod clar răspunsul este nu.

Scriptul introduce mai puțin decât operatorul (<). Deoarece operatorul mai puțin decât operatorul este folosit și pentru redirecționare, trebuie să-l scape cu o slash (\) pentru ca aceasta să însemne mai puțin decât de aceea în scriptul de mai sus am comparat "$ name1" \ <"$ name2".

Opusul mai mic decât este, evident, mai mare decât. În loc de a utiliza \ .

De exemplu

dacă ["$ nume1" \> "$ name2"]

03 din 08

Ghid de incepatori pentru BASH - Compararea sirurilor

BASH Tutorial - compararea sirurilor.

Dacă doriți să testați dacă o variabilă are o valoare, puteți folosi următorul test:

dacă [-n $ name2]

În scriptul de mai sus am testat dacă $ name2 a dat o valoare și dacă nu apare mesajul "Nu există nici un bob, nu a fost niciodată un bob apare".

04 din 08

Ghid de incepatori pentru BASH - Compararea sirurilor

BASH Tutorial - compararea sirurilor.

Pe diapozitivul trecut am acoperit dacă o variabilă a fost setată sau nu. Uneori, deși s-ar fi putut stabili o variabilă, dar s-ar putea să nu aibă o valoare reală.

De exemplu:

nume1 = ""

Pentru a testa dacă o variabilă are o valoare sau nu (adică are o lungime de zero), utilizați -z după cum urmează:

dacă [-z $ name1]

În scriptul de mai sus am setat $ name1 la un șir de lungime zero și apoi l-am comparat folosind -z. Dacă $ nume1 este zero în lungime mesajul "gary a ieșit pentru seara" va fi afișat.

05 din 08

Ghid de incepatori pentru BASH - compararea numerelor

BASH Tutorial - Compararea numerelor.

Până acum, toate comparațiile au fost făcute pentru șiruri de caractere. Dar compararea numerelor?

Scriptul de mai sus arată un exemplu de comparare a două numere:

#! / bin / bash

a = 4
b = 5

dacă [$ a = $ b]
apoi
echo "4 = 5"
altfel
echo "4 nu este egal cu 5"
Fi

Pentru a seta o variabilă să fie un număr, pur și simplu setați-o fără ghilimele. Apoi puteți compara numerele cu un semn de egalitate.

Prefer, totuși, să folosesc următorul operator pentru a compara două numere:

Dacă [$ a -eq $ b]

06 din 08

Ghid de incepatori pentru BASH - compararea numerelor

BASH Tutorial - Compararea numerelor.

Dacă doriți să comparați dacă un număr este mai mic decât un alt număr, puteți utiliza mai puțin decât operatorul (<). Ca și în cazul șirurilor de caractere, trebuie să scăpați mai puțin de operatorul cu o bară. (\ <).

O modalitate mai bună de comparare a numerelor este utilizarea următoarei notații:

De exemplu:

dacă [$ a -lt $ b]

dacă [$ a -le $ b]

dacă [$ a -ge $ b]

dacă [$ a -gt $ b]

07 din 08

Ghid de incepatori pentru BASH - compararea numerelor

BASH Tutorial - Compararea numerelor.

În cele din urmă, pentru acest ghid, dacă doriți să testați dacă două numere sunt diferite, puteți utiliza fie mai puțin decât operatorii mai mari decât operatorii împreună (<>) sau -ne, după cum urmează:

dacă [$ a <> $ b]

dacă [$ a -ne $ b]

08 din 08

Ghid de incepatori pentru BASH - Operatori de comparatie - Rezumat

Dacă ați pierdut primele trei părți ale acestui ghid, le puteți găsi făcând clic pe următoarele linkuri:

În următoarea parte a ghidului voi acoperi aritmetica.