BASHin aloittelijan opas - asiat vertailussa

01/08

BASHin aloittelijan opas - asiat vertailussa

BASH-oppitunti - vertaamalla kielekkeitä.

BASH-opetusohjelman edellisessä osassa tarkasteltiin ehdollisia lausumia .

Tämä opas oli hyvin pitkä, mutta oikeasti vain osoitti kuinka hallita logiikan virtausta. Tässä oppaassa kuvataan eri tavat, joilla voit verrata muuttujia.

Yllä oleva kuva näyttää tämän esimerkin ensimmäisen esimerkin:

#! / bin / bash

nimi1 = "Gary"
name2 = "bob"

jos ["$ name1" = "$ name2"]
sitten
echo "nimien ottelu"
muu
echo "nimet eivät täsmää"
fi


Edellä olevassa käsikirjoituksessa olen määritellyt kaksi muuttujaa nimeltään name1 ja name2 ja niille osoitetut arvot "gary" ja "bob". Koska muuttujat sisältyvät lainausmerkkien väliin, niitä kutsutaan merkkijonomuuttujiksi, jotka tulevat merkityksellisemmiksi, kun tutoriaali jatkuu.

Kaikki käsikirjoitus on vertailla arvoa $ name1 ja $ name2 ja jos ne vastaavat lähtöä merkkijono "nimiä ottelu" ja jos he eivät anna merkkijonon "nimitykset eivät täsmää".

Muuttujien $ name1 ja $ name2 ympärillä olevat lainausmerkit ovat tärkeitä, koska jos jommankumman arvon arvoa ei ole määritetty, komentosarja toimii edelleen.

Esimerkiksi jos $ name1 ei koskaan asetettu, vertaisit "" bob: n "" kanssa. Ilman lainausmerkkejä sinulla olisi jäljellä = "bob", joka selvästi epäonnistuu.

Voit myös käyttää! = Merkintää määrittelemättä ole yhtä kuin seuraavalla tavalla:

jos ["$ name1"! = "$ name2"]

02/08

BASHin aloittelijan opas - vertaamalla kielekkeitä

BASH-oppitunti - vertaamalla kielekkeitä.

Yllä olevassa esimerkissä testi vertailee samoja kahta merkkijonoa ja kysyy, onko kysymys ennen bobia aakkosissa?

Selvästi vastaus on ei.

Skripti esittelee pienemmän operaattorin (<). Koska vähemmän kuin operaattoria käytetään myös uudelleenohjaukseen, sinun on poistettava se pisteellä (\), jotta se merkitsisi vähemmän kuin minkä vuoksi edellä olevaan komentosarjaan verrattuna "$ name1" \ <"$ name2".

Päinvastainen vähemmän kuin selvästi suurempi kuin. Sen sijaan, että käytit \ .

Esimerkiksi

jos ["$ name1" \ "" $ name2 "]

03/08

BASHin aloittelijan opas - vertaamalla kielekkeitä

BASH-oppitunti - vertaamalla kielekkeitä.

Jos haluat testata, onko muuttujalla arvoa, voit käyttää seuraavaa testiä:

jos [-n $ nimi2]

Yllä olevasta käsikirjasta olen testannut onko $ name2 annettu arvo ja jos se ei ole viesti "Ei ole bob, ei ole koskaan näkynyt bobia".

04/08

BASHin aloittelijan opas - vertaamalla kielekkeitä

BASH-oppitunti - vertaamalla kielekkeitä.

Aikaisemmasta diasta kerroimme, onko muuttuja asetettu vai ei. Joskus vaikka muuttuja on ehkä asetettu, mutta sillä ei välttämättä ole arvoa.

Esimerkiksi:

name1 = ""

Voit testata, onko muuttujalla arvo vai ei (ts. Nollan pituus) käyttää -z seuraavalla tavalla:

jos [-z $ nimi1]

Edellä olevassa käsikirjoituksessa olen asettanut $ name1 nollapituuden merkkijonoon ja sitten verrataan sitä käyttäen -z. Jos $ name1 on nolla pituus, viesti "gary on lähtenyt illaksi" tulee näkyviin.

05/08

BASH: n aloittelijan opas - Numeron vertailu

BASH-oppitunti - vertaamalla numeroita.

Tähän mennessä kaikki vertailu on ollut merkkijonoille. Entä numeroiden vertailu?

Edellä oleva käsikirjoitus näyttää esimerkin kahden numeron vertailusta:

#! / bin / bash

a = 4
b = 5

jos [$ a = $ b]
sitten
echo "4 = 5"
muu
kaiku "4 ei ole sama kuin 5"
fi

Jos haluat asettaa muuttujan numeroon, aseta se ilman lainausmerkkejä. Voit sitten verrata numerot tasa-arvoiseen merkkiin.

Haluan kuitenkin käyttää seuraavia operaattoreita vertailemaan kahta numeroa:

Jos [$ a -eq $ b]

06/08

BASH: n aloittelijan opas - Numeron vertailu

BASH-oppitunti - vertaamalla numeroita.

Jos haluat vertailla, onko numero pienempi kuin toinen numero, voit käyttää vähemmän operaattoria (<). Kuten jousien kanssa, sinun on poistuttava vähemmän kuin operaattori, jossa on viiste. (\ <).

Parempi tapa vertailla numeroita on käyttää seuraavia merkintöjä:

Esimerkiksi:

jos [$ a -lt $ b]

jos [$ a -le $ b]

jos [$ a -ge $ b]

jos [$ a -gt $ b]

07/08

BASH: n aloittelijan opas - Numeron vertailu

BASH-oppitunti - vertaamalla numeroita.

Jos haluat testata, onko kaksi numeroa erilainen, voit käyttää joko yhtä tai useampia operaattoreita yhdessä (<>) tai -nä seuraavalla tavalla:

jos [$ a <> $ b]

jos [$ a -ne $ b]

08/08

Aloittelijan opas BASH: lle - vertailuoperaattorit - yhteenveto

Jos olet unohtanut tämän oppaan ensimmäiset kolme osaa, voit etsiä niitä klikkaamalla seuraavia linkkejä:

Seuraavan osan oppaasta aion kattaa aritmeettinen.