Kuidas kasutada testimise tingimusi Bashi skripti

Testkäsku saab kasutada Linuxi käsureal, et võrrelda ühte elementi teisega, kuid seda kasutatakse sagedamini BASH-shelli skriptides osana tingimuslikest avaldustest, mis kontrollivad loogikat ja programmi voogu.

Põhinäide

Nende käskude abil saate lihtsalt avada terminali akna .

test 1 -qq 2 && echo "jah" || echo "no"

Eespool toodud käsu võib jagada järgmiselt:

Põhimõtteliselt käsk võrdleb 1 kuni 2 ja need vastavad echo "jah" avaldusele, mis kuvab "jah" ja kui need ei ühti kaja "no" avaldusega, mis kuvab "ei".

Numbrite võrdlemine

Kui võrdlete elemente, mis parsitakse numbritega, võite kasutada järgmisi võrdlusoperaate:

Näited:

test 1 -qq 2 && echo "jah" || echo "no"

(kuvab ekraanile "ei", sest 1 ei võrdu 2)

test 1 -ge 2 && echo "jah" || echo "no"

(kuvatakse ekraanile "ei", sest 1 ei ole suurem või võrdne 2-ga)

test 1 -gt 2 && echo "jah" || echo "no"

(kuvatakse ekraanile "ei", sest 1 ei ole suurem kui 2)

test 1-le 2 && echo "jah" || echo "no"

(kuvatakse ekraanile "jah", kuna 1 on väiksem või võrdne 2)

test 1 -lt 2 && echo "jah" || echo "no"

(kuvatakse ekraanile "jah", kuna 1 on väiksem või võrdne 2)

test 1 -ne 2 && echo "jah" || echo "no"

(kuvatakse ekraanile "jah", sest 1 ei võrdu 2)

Teksti võrdlemine

Kui võrrelda elemente, mis parsivad stringidena, võite kasutada järgmisi võrdlusoperaate:

Näited:

test "string1" = "string2" && echo "jah" || echo "no"

(kuvab ekraanile "ei", sest string1 ei võrdu "string2")

test "string1"! = "string2" && echo "jah" || echo "no"

(kuvatakse ekraanile "jah", sest string1 ei võrdu "string2")

test -n "string1" && echo "jah" || echo "no"

(kuvatakse ekraanile "jah", sest stringi 1 stringi pikkus on nullist suurem)

test -z "string1" && echo "jah" || echo "no"

(kuvatakse ekraanile "ei", sest stringi 1 stringi pikkus on nullist suurem)

Failide võrdlemine

Kui võrreldate faile, võite kasutada järgmisi võrdlusoperaate:

Näited:

test / path / to / file1 -n / path / to / file2 && echo "jah"

(Kui fail1 on uuem kui file2, siis kuvatakse sõna "jah")

test -e / path / to / file1 && echo "jah"

(kui fail1 on olemas, kuvatakse sõna "jah")

test -O / tee / to / file1 && echo "jah"

(kui oled file1, siis kuvatakse sõna "jah")

Terminoloogia

Mitme tingimuse võrdlus

Siiani on kõik võrdlenud üks asi teisega, aga kui tahad võrrelda kahte tingimust.

Näiteks kui loomal on 4 jalga ja läheb "moo", on see ilmselt lehm. Lihtsalt kontrollida 4 jalga ei garanteeri, et teil on lehm, kuid kindlasti kontrollib seda heli.

Mõlema tingimuse katsetamiseks korraga kasutage järgmist avaldust:

test 4 -equ 4 -a "moo" = "moo" && echo "see on lehm" || echo "see pole lehm"

Peamine osa siin on -a, mis tähistab ja.

Parem ja sagedamini kasutatav viis sama testi sooritamiseks on järgmine:

test 4-eks 4 & & test "moo" = "moo" && echo "see on lehm" || echo "see pole lehm"

Teine test, mida võiksite teha, on kahe avalduse võrdlemine ja kas mõni tõeline väljund on string. Näiteks kui soovite kontrollida, kas on olemas fail nimega "file1.txt" või on olemas fail nimega "file1.doc", võite kasutada järgmist käsku

test -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "file1 ei eksisteeri"

Peamine osa siin on -o, mis tähistab või.

Parem ja sagedamini kasutatav viis sama testi sooritamiseks on järgmine:

test -e file1.txt || test-e file1.doc && echo "file1 exists" || echo "file1 ei eksisteeri"

Katse märksõna kõrvaldamine

Võrdluse tegemiseks ei pea te tegelikult sõna katse kasutama. Kõik, mida peate tegema, on lisada avaldus nurksulgudes järgmiselt:

[-e file1.txt] && echo "file1 exists" || echo "file1 ei eksisteeri"

[Ja] tähendab põhimõtteliselt sama mis testi.

Nüüd teate seda, et saate parandada mitmete tingimuste võrdlemist järgmiselt:

[4-tabel 4] && ["moo" = "moo"] && echo "see on lehm" || echo "see pole lehm"

[-e file1.txt] || [-e file1.doc] && echo "file1 exists" || echo "file1 ei eksisteeri"

Kokkuvõte

Katse käsk on skriptidelt kasulikum, sest saate testida ühe muutuja väärtust teise ja kontrollprogrammi voolu suhtes. Tavalises käsureal saab seda kasutada, et kontrollida, kas fail on olemas või