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:
- teszt - ez azt jelenti, hogy összehasonlításra készülsz
- 1 - az első elem, amelyet össze akarsz hasonlítani
- -eq (hogyan hasonlít össze, ebben az esetben megvizsgálja, 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 parancs, ha az összehasonlítás hamis
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:
- -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 a következő ö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 összehasonlítja a fájlokat, 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ói csoportnak
- -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 / 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
- 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 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