Hogyan használjuk a tesztelési feltételeket a bashszkripten belül?

A teszt parancsot a Linux parancssorban lehet használni, hogy egy elemet egymással szemben hasonlítsanak össze, de a BASH shell parancsfájlokban gyakoribbak a feltételes utasítások részeként, amelyek szabályozzák a logikát és a programfolyamatot.

Egy alapvető példa

Ezek a parancsok egyszerűen megnyithatók a terminál ablak megnyitásával .

teszt 1 -eq 2 && echo "yes" || visszhang "nem"

A fenti parancs a következőképpen osztható meg:

Lényegében a parancs 1-2-t hasonlít össze, és megfelelnek az echo "yes" utasításnak, amely "yes" -t jelenít meg, és ha nem felelnek meg a "no" utasításnak, amely "nem" -et jelenít meg.

Számok összehasonlítása

Ha olyan elemeket hasonlít össze, amelyek számként értelmezhetők, használhatja a következő összehasonlító operátorokat:

Példák:

teszt 1 -eq 2 && echo "yes" || visszhang "nem"

(a képernyőn "nem" jelenik meg, mert 1 nem egyenlő 2)

teszt 1 -ge 2 && echo "yes" || visszhang "nem"

(a képernyőn "nem" jelenik meg, mert 1 nem nagyobb vagy egyenlő 2-vel)

teszt 1 -gt 2 && echo "yes" || visszhang "nem"

(a képernyőn "nem" jelenik meg, mivel 1 nem nagyobb, mint 2)

teszt 1 -le 2 && echo "yes" || visszhang "nem"

(a kijelzőn "igen" jelenik meg, mert 1 kisebb vagy egyenlő 2-vel)

teszt 1 -lt 2 && echo "yes" || visszhang "nem"

(a kijelzőn "igen" jelenik meg, mert 1 kisebb vagy egyenlő 2-vel)

teszt 1 -ne 2 && echo "yes" || visszhang "nem"

(a képernyőn megjelenik "igen", mert 1 nem egyenlő 2)

Szöveg összehasonlítása

Ha olyan elemeket hasonlít össze, amelyek sztringként értelmezhetők, használhatja a következő összehasonlító operátorokat:

Példák:

teszt "string1" = "string2" && echo "yes" || visszhang "nem"

("nem" jelenik meg a képernyőn, mert "string1" nem egyenlő a "string2" -rel)

teszt "string1"! = "string2" && echo "yes" || visszhang "nem"

("igen" jelenik meg a képernyőn, mert "string1" nem egyenlő a "string2" -rel)

teszt -n "string1" && echo "igen" || visszhang "nem"

("igen" jelenik meg a képernyőn, mert a "string1" hossza nagyobb mint nulla)

teszt -z "string1" && echo "igen" || visszhang "nem"

(a képernyőn "nem" jelenik meg, mert a "string1" hossza nagyobb mint nulla)

Fájlok összehasonlítása

Ha összehasonlítja a fájlokat, használhatja a következő összehasonlító operátorokat:

Példák:

teszt / elérési út / fájl / file1 -n / path / to / file2 && echo "igen"

(Ha a fájl1 újabb, mint a 2. fájl, akkor megjelenik az "igen" szó)

teszt -e / path / to / file1 && echo "igen"

(ha a fájl1 létezik, az "igen" szó jelenik meg)

teszt -O / path / to / file1 && echo "igen"

(ha saját fájl1 van, akkor megjelenik az "igen" szó)

Terminológia

Összehasonlítva a több feltételeket

Eddig mindent összehasonlított egy dolog ellen a másik, de mi van, ha szeretné összehasonlítani két feltétel.

Például, ha egy állatnak 4 lába van és "moo" -ra megy, valószínűleg egy tehén. Egyszerűen 4 láb ellenõrzése nem garantálja, hogy van tehén, de ellenõrizni fogja a hangot.

Mindkét feltétel egyszerre történő teszteléséhez használja a következő kijelentést:

teszt 4-ek 4 -a "moo" = "moo" && echo "ez egy tehén" || echo "ez nem tehén"

A legfontosabb rész itt az -a, amely jelzi és.

Van egy jobb és gyakoribb módja ugyanazon teszt elvégzésére, és ez a következő:

teszt 4 -eq 4 && teszt "moo" = "moo" && echo "ez egy tehén" || echo "ez nem tehén"

Egy másik teszt, amit érdemes megtenni, két állítást hasonlít össze, és ha valaki igazából kiad egy szöveget. Ha például ellenőrizni szeretné, hogy létezik-e a "file1.txt" nevű fájl, vagy létezik-e a "file1.doc" nevű fájl, a következő parancsot használhatja

test -e file1.txt -o -e file1.doc && echo "fájl1 létezik" || echo "file1 nem létezik"

A legfontosabb rész itt a -o, ami vagy.

Van egy jobb és gyakoribb módja ugyanazon teszt elvégzésére, és ez a következő:

teszt -e file1.txt || test -e file1.doc && echo "fájl1 létezik" || echo "file1 nem létezik"

A teszt kulcsszó megszüntetése

Igazából nem kell használni a szó tesztet az összehasonlítás elvégzéséhez. Mindössze annyit kell tenned, hogy mellékeljük a következőket a szögletes zárójelben:

[-e file1.txt] && echo "fájl1 létezik" || echo "file1 nem létezik"

A [és] alapvetően ugyanazt jelenti, mint a teszt.

Most már tudod, hogy javíthatja a több feltétel összehasonlítását az alábbiak szerint:

[4-eq 4] && ["moo" = "moo"] && echo "ez egy tehén" || echo "ez nem tehén"

[-e file1.txt] || [-e file1.doc] && echo "fájl1 létezik" || echo "file1 nem létezik"

összefoglalás

A teszt parancs hasznosabb a szkriptekben, mert egy változó értékét ellenőrizheti a másikra és a vezérlő programfolyamatát. A szabványos parancssorban használhatja annak tesztelésére, hogy van-e fájl, vagy