Skip to main content

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

Tófólia Oasefol Epdm lyuk ragasztás (Június 2026)

Tófólia Oasefol Epdm lyuk ragasztás (Június 2026)
Anonim

A teszt parancsot a Linux parancssori vonalon lehet egy elemet egy másikhoz hasonlítani, de a BASH shell-parancsfájlokban gyakrabban használják 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:

  • teszt - Ez azt jelenti, hogy összehasonlítást kíván készíteni
  • 1 - Az első elem, amelyet össze akarsz hasonlítani
  • -eq - Hogy hasonlít. Ebben az esetben megpróbálja ellenőrizni, hogy egy szám egyenlő-e mással.
  • 2 - Az elem, amellyel összehasonlítjuk az első elemet
  • && - Futtassa a következő utasítást, ha az eredmény igaz
  • echo "yes" - A futtatni kívánt parancs, ha az összehasonlítás igaz
  • || - Futtassa a következő utasítást, ha az eredmény hamis
  • echo "no" - A parancsot futtatni, ha az összehasonlítás hamis

Lényegében a parancs összehasonlítja az 1-2 értéket, és ha azok megegyeznek, az echo "yes" utasítás végrehajtásra kerül, amely "yes" -et jelenít meg, és ha nem egyeznek meg, akkor a "no" kijelzésű echo "no" utasítás végrehajtásra kerül.

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:

  • -eq - értéke 1 azonos érték 2
  • -ge - az 1. érték nagyobb vagy egyenlő a 2. értékkel
  • -gt - az 1. érték nagyobb, mint a 2. érték
  • -le - értéke 1 kisebb vagy egyenlő a 2. értékkel
  • -lt - 1 érték kisebb, mint a 2. érték
  • -ne - az 1 érték nem egyenlő 2 értékkel

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 az alábbi összehasonlító operátorokat:

  • = - a string 1 egyezik a 2. sorral
  • ! = - a 1-es karakterlánc a 2. sztringtől eltérő
  • -n - a húrhossza nagyobb, mint 0
  • -z - a string hossza 0

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 fájlokat hasonlít össze, használhatja a következő összehasonlító operátorokat:

  • -ef - A fájlok ugyanazzal az eszközzel és inode számokkal rendelkeznek (ugyanaz a fájl)
  • -nt - Az első fájl újabb, mint a második fájl
  • -ot - Az első fájl régebbi a második fájlnál
  • -b - A fájl létezik és blokk különleges
  • -c - A fájl létezik és karakteres
  • -d - A fájl létezik, és egy könyvtár
  • -e - A fájl létezik
  • -f - A fájl létezik és rendszeres fájl
  • -g - A fájl létezik, és rendelkezik a megadott csoportszámmal
  • -G - A fájl létezik és tulajdonosa a felhasználó csoportjának
  • -h - A fájl létezik és szimbolikus link
  • -k - A fájl létezik, és rendelkezik a ragadós bitkészletével
  • -L - Ugyanaz, mint a -h
  • -O - ​​A fájl létezik, te vagy a tulajdonos
  • -p - A fájl létezik, és nevű cső
  • -r - A fájl létezik és olvasható
  • -s - A fájl létezik, és nagyobb, mint nulla
  • -S - A fájl létezik, és egy aljzat
  • -t - A fájlleíró nyitva van egy terminálon
  • -u - A fájl létezik, és beállítva a set-user-id bit
  • -w - A fájl létezik és írható
  • -x - A fájl létezik és végrehajtható

Példák

teszt / elérési út / file1 -nt / path / to / file2 && echo "yes"

(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

  • Speciális blokk - A fájl egy blokkeszköz, ami azt jelenti, hogy az adatokat blokkok blokkjában olvassák. Ezek általában eszközfájlok, például merevlemezek.
  • Karakter különleges - A fájlt azonnali hatállyal írja le, és általában egy eszköz, például egy soros port

Összehasonlítva a több feltételeket

Eddig minden össze hasonlított egy dolgot a másik ellen, de mi van, ha két körülményt szeretne összehasonlítani?

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

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 csinálni, ha két állítást hasonlít össze, és ha igaz, akkor egy stringet kell kiadnia. 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, akkor 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, amely jelzi 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 parancssori vonalon használhatja annak tesztelésére, hogy van-e fájl, vagy sem.