Hvernig á að nota prófunarskilyrði innan Bash Script

Prófunarskipan er hægt að nota á Linux skipanalínunni til að bera saman einn þáttur gagnvart öðrum en það er almennt notaður í BASH skelskriftir sem hluti af skilyrðum yfirlýsingum sem stjórna rökfræði og forritflæði.

Grunn dæmi

Þú getur prófað þessar skipanir einfaldlega með því að opna stöðuglugga .

próf 1 -eq 2 && echo "yes" || echo "nei"

Ofangreind skipun er sundurliðuð á eftirfarandi hátt:

Í meginatriðum er stjórnin að bera saman 1 til 2 og þau passa við echo "já" yfirlýsingin er framkvæmd sem sýnir "já" og ef þau passa ekki við echo "nei" yfirlýsingin er framkvæmd sem sýnir "nei".

Samanburður á tölum

Ef þú ert að bera saman þætti sem flokka sem tölur sem þú getur notað eftirfarandi rekstraraðila samanburðar:

Dæmi:

próf 1 -eq 2 && echo "yes" || echo "nei"

(birtir "nei" á skjánum vegna þess að 1 er ekki jöfn 2)

próf 1 -ge 2 && echo "yes" || echo "nei"

(birtir "nei" á skjánum því 1 er ekki meiri eða jöfn 2)

próf 1 -gt 2 & & echo "yes" || echo "nei"

(birtir "nei" á skjánum því 1 er ekki meiri en 2)

próf 1 -le 2 & & echo "yes" || echo "nei"

(birtir "já" á skjánum vegna þess að 1 er minna en eða jafnt og 2)

prófið 1 -lt 2 & & echo "yes" || echo "nei"

(birtir "já" á skjánum vegna þess að 1 er minna en eða jafnt og 2)

próf 1 -ne 2 & & echo "yes" || echo "nei"

(birtir "já" á skjánum vegna þess að 1 er ekki jöfn 2)

Samanburður á texta

Ef þú ert að bera saman þætti sem flokka sem strengir getur þú notað eftirfarandi rekstraraðila samanburðar:

Dæmi:

prófaðu "string1" = "string2" && echo "yes" || echo "nei"

(birtir "nei" á skjáinn því "strengur1" er ekki jöfn "strengur2")

prófaðu "string1"! = "string2" && echo "yes" || echo "nei"

(birtir "já" á skjáinn því "strengur1" er ekki jöfn "strengur2")

próf -n "string1" && echo "yes" || echo "nei"

(birtir "já" á skjánum því "strengur1" hefur strengalengd meiri en núll)

próf -z "string1" && echo "yes" || echo "nei"

(birtir "nei" á skjáinn því "strengur1" hefur strengalengd meiri en núll)

Samanburður á skrám

Ef þú ert að bera saman skrár sem þú getur notað eftirfarandi rekstraraðila samanburðar:

Dæmi:

próf / slóð / til / skrá1 -n / slóð / til / skrá2 && echo "já"

(Ef file1 er nýrri en file2 þá birtist orðið "já")

próf -e / slóð / til / skrá1 && echo "já"

(ef skrá1 er til staðar birtist orðið "já")

próf -O / leið / til / skrá1 && echo "já"

(ef þú átt skrá1 þá birtist orðið "já") ")

Terminology

Samanburður á mörgum skilyrðum

Svo langt hefur allt verið að bera saman eitt við annað en hvað ef þú vilt bera saman tvö skilyrði.

Til dæmis, ef dýr hefur 4 fætur og fer "moo" er það líklega kýr. Einfaldlega að skoða 4 fætur tryggir ekki að þú hafir kú en skoðuð hljóðið sem það gerir örugglega.

Til að prófa báðar aðstæður í einu skaltu nota eftirfarandi yfirlýsingu:

próf 4-eq 4 -a "moo" = "moo" && echo "það er kýr" || echo "það er ekki kýr"

Lykilhlutinn hér er sá sem stendur fyrir og.

Það er betra og algengari leið til að framkvæma sama prófið og það er sem hér segir:

próf 4-eq 4 && próf "moo" = "moo" && echo "það er kýr" || echo "það er ekki kýr"

Annar prófun sem þú gætir viljað er að bera saman tvö yfirlýsingar og hvort annað hvort sé satt framleiðsla strengur. Til dæmis, ef þú vilt athuga hvort skrá sem heitir "file1.txt" er til staðar eða skrá sem kallast "file1.doc" er hægt að nota eftirfarandi skipun

próf -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "file1 er ekki til"

Lykilhlutinn hér er sá sem stendur fyrir eða.

Það er betra og algengari leið til að framkvæma sama prófið og það er sem hér segir:

prófaðu -e file1.txt || próf -e file1.doc && echo "file1 exists" || echo "file1 er ekki til"

Útrýming lykilorði prófunar

Þú þarft ekki raunverulega að nota orðprófið til að framkvæma samanburðina. Allt sem þú þarft að gera er að fylgja yfirlýsingunni í fermetra sviga sem hér segir:

[-e file1.txt] && echo "file1 exists" || echo "file1 er ekki til"

[Og] þýðir í grundvallaratriðum það sama og próf.

Nú veit þú þetta getur þú bætt við samanburð á mörgum skilyrðum sem hér segir:

[4-eq 4] && ["moo" = "moo"] && echo "það er kýr" || echo "það er ekki kýr"

[-e file1.txt] || [-e file1.doc] && echo "file1 exists" || echo "file1 er ekki til"

Yfirlit

Prófunarskipunin er gagnlegari í forskriftir vegna þess að þú getur prófað gildi eins breytu gagnvart annarri og stjórnunarflæði. Á venjulegu stjórnalínunni geturðu notað það til að prófa hvort skrá sé til eða