01 iš 08
Pradedančiųjų vadovas BASH - dalykų palyginimas
Ankstesniame BASH pamokos skyriuje mes nagrinėjome sąlyginius teiginius .
Šis vadovas buvo labai ilgas, bet tik parodė, kaip valdyti logikos srautą. Šiame vadove pateikiami skirtingi kintamųjų palyginimo būdai.
Pirmiau pateiktas vaizdas rodo pirmąjį šios savaitės vadovo pavyzdį:
#! / bin / bash
name1 = "gary"
name2 = "bob"jei ["$ name1" = "$ name2"]
tada
echo "vardai atitinka"
Kitas
echo "pavadinimai nesutampa"
fi
Šiame scenarijuje aš apibrėžiau du kintamuosius, pavadintus name1 ir name2, ir priskyriau jiems reikšmes "gary" ir "bob". Kadangi kintamieji yra tarp kabučių, jie vadinami styginių kintamaisiais, kurie tampa labiau aktualūs, kaip pamoka.
Visame scenarijuje yra palyginti $ name1 ir $ name2 reikšmę ir, jei jie atitinka išvestį, eilutė "vardų atitiktis" ir jei jie neišduoda eilutės "pavadinimai neatitinka".
Kainos apie $ name1 ir $ name2 kintamuosius yra svarbios, nes jei jų vertė nenustatyta, scenarijus vis tiek veiks.
Pavyzdžiui, jei $ name1 niekada nebuvo nustatytas, tu "" palyginsi su "bob". Be kabučių jums liktų = "bob", kuris aiškiai nepasiseka.
Taip pat galite naudoti! = Nota apibrėžti ne tokią reikšmę:
jei ["$ name1"! = "$ name2"]
02 iš 08
Pradedančiųjų vadovas BASH - lyginant strings
Pirmiau pateiktame pavyzdyje bandymas lygina tas pačias dvi eilutes ir prašo, kad klausimas prieštarauja abėcėlėje?
Akivaizdu, kad atsakymas yra ne.
Skriptas įveda mažiau nei operatorius (<). Kadangi mažiau nei operatorius taip pat naudojamas peradresavimui, turite jį išvengti su brūkšniu brūkšniu (\), nes tai reiškia mažiau, todėl aukščiau esančiame scenarijuje palyginome "$ name1" \ <"$ name2".
Skirtumas nuo mažesnio nei akivaizdžiai didesnis nei. Užuot naudoję \
Pavyzdžiui
jei ["$ name1" \> "$ name2"]
03 iš 08
Pradedančiųjų vadovas BASH - lyginant strings
Jei norite patikrinti, ar kintamasis turi vertę, galite naudoti šį testą:
jei [-n $ name2]
Aukščiau esančiame scenarijuje aš išbandžiau, ar $ name2 buvo suteikta vertė, ir jei nėra pranešimo "nėra jokio bobo, niekada nebuvo rodomo bob".
04 iš 08
Pradedančiųjų vadovas BASH - lyginant strings
Anksčiau esančiame skaidrene apžvelgėme, ar kintamasis buvo nustatytas, ar ne. Kartais nors kintamasis galėjo būti nustatytas, tačiau jis gali neturėti vertės.
Pavyzdžiui:
name1 = ""
Norėdami patikrinti, ar kintamasis turi reikšmę, ar ne (ty turi nulį), naudokite -z taip:
jei [-z $ name1]
Pirmiau esančiame scenarijuje nustatiau $ name1 prie nulinės ilgio eilutės ir palygino jį su -z. Jei $ name1 yra nulis, bus rodoma žinutė "gary išėjo vakarui".
05 iš 08
Pradedančiųjų vadovas BASH - lyginant numerius
Iki šiol visi palyginimai buvo skirti styginiams. Kaip lyginti numerius?
Šis scenarijus rodo dviejų skaičių palyginimo pavyzdį:
#! / bin / bash
a = 4
b = 5jei [$ a = $ b]
tada
echo "4 = 5"
Kitas
echo "4 nėra lygus 5"
fi
Norėdami nustatyti kintamąjį skaičių, tiesiog jį nustatykite be kabučių. Tuomet tu gali palyginti skaičius su lygiaverčiu ženklu.
Tačiau norėčiau palyginti du numerius naudodamasis tokiu operatoriumi:
Jei [$ a -eq $ b]
06 iš 08
Pradedančiųjų vadovas BASH - lyginant numerius
Jei norite palyginti, ar numeris yra mažesnis už kitą numerį, galite naudoti mažiau nei operatorius (<). Kaip ir su stygomis, turite pabėgti mažiau nei operatorius su brūkšniu. (\ <).
Geresnis numerių lyginimo būdas yra naudoti šį įrašą:
- Mažiau nei -lt
- Mažiau arba lygu-le
- Didesnis nei -gt
- Didesnis arba lygus -ge
Pavyzdžiui:
jei [$ a -lt $ b]
jei [$ a -le $ b]
jei [$ a -ge $ b]
jei [$ a -gt $ b]
07 iš 08
Pradedančiųjų vadovas BASH - lyginant numerius
Galiausiai, jei norėsite išbandyti, ar du skaitmenys yra skirtingi, šį vadovą galite naudoti kartu (<>) arba -ne kaip operatorius mažesnis arba didesnis:
jei [$ a <> $ b]
jei [$ a -ne $ b]
08 iš 08
Pradedančiųjų vadovas BASH palyginimo operatoriams - santrauka
Jei praleidote pirmąsias tris šio vadovo dalis, jas galite rasti spustelėję šiuos saitus:
Kitoje gidų dalyje aš tapsiu aritmetika.