![]()
A Bash-ben történő programozás időnként szórakoztató lehet. Szintén szórakoztató lehet, ha elkülöníted az if-it a többi-if-től vagy elif-től, ahogyan Bash-ban hívják őket. Tudja meg, hogyan lehet a Bash feltételeket rendbe hozni.
Bash feltételes: ha, akkor, más, elif
Ugyanolyan jó, mint az összes kódoló nyelv, léteznek feltételesek – feltételes utasítások, amelyek lehetővé teszik az ember számára a különböző helyzetek tesztelését. A legtöbb programozási nyelvben alap if utasítás lehetővé tenné egy adott programozási változó állapotának vagy értékének tesztelését. Például lehet tesztelni, hogy egy változó üres-e vagy sem.
Ha többet szeretne megtudni a Bash változókról, érdemes áttekinteni a mi oldalunkat Bash függvények és helyi változók cikk.
A Bash egy teljes értékű Linux shell, és átfogó programozási nyelv. Számos kiterjesztést tartalmaz a parancsfájl / programozási nyelvben található gyakoribb feltételes utasításokhoz is. Például tesztelheti a fájlok jelenlétét, hogy lássa, hogy a grep -q nyilatkozat sikeres volt és így tovább.
Ezenkívül megadhat bonyolult feltételes utasításokat, és akár az alhéjakat is közvetlenül a if stb. maga a feltételes nyilatkozat. Ez a Bash-t nagyon alkalmassá teszi a nagy adatkezelésre / -kezelésre, a szöveg elemzésére és sok más DevOps-szerű feladatra.
Ez a cikk főként a feltételrendszer helyes használatára összpontosít if...then, else, és elif nyilatkozatok. Egy jövőbeni cikk bonyolultabb tesztfeltételeket fog megvizsgálni, alhéjak használatával a feltételes utasításokban stb.
Bash feltételes tesztelése: ha..majd … fi
Feltételes utasítás írása a Bash-ban könnyű és egyszerű. Akár közvetlenül a Bash parancssorba is beírhatja őket, szkript használata nélkül:
if [ "1" == "1" ]; then echo 'true'; fi
![]()
Az eredmény az igaz, as 1 mérkőzések 1. Ne feledje, hogy az elemek közötti egyenlőség tesztelésének módja az == és nem =. Ez sok nyelvben így van, és gyakran azért kerül sor, hogy elkerüljék a „hozzárendelést”, vagy attól egyértelműen elkülönüljenek (azaz egy változót adott értékre állítsanak).
Vegye figyelembe azt is, hogy az egyes feltételeket megszüntetjük if végződéssel ellátott nyilatkozat fi (a fordítottja ha) nyilatkozat. Ez lehetővé teszi számunkra, hogy utána több sort is megadjunk then záradék, mielőtt a majd szakasz.
Bash feltételes tesztelése: más És Változók
Tegyük ezt most egy kis szkriptbe, adjunk hozzá egy else szakaszban, és adjon hozzá néhány változó ellenőrzést.
Meghatározzuk test.sh alábbiak szerint:
#!/bin/bash
VAR1=1
VAR2=1
if [ "${VAR1}" == "${VAR2}" ]; then
echo 'true'
else
echo 'false'
fi
Ezután kiadással futtathatóvá tesszük ezt a kis szkriptet chmod +x test.sh amely a futtatható jelzőt állítja be a test.sh forgatókönyv.
![]()
A forgatókönyv belsejében beállítottuk VAR1 és VAR2 az 1. értékére. Ezután kiadunk egy if utasítást, amely összehasonlítja a két változót és az echo-t true ha az összehasonlítás érvényes, és false ha az összehasonlítás nem sikerült. Az eredmény helyes true Kimenet.
Bash feltételes tesztelése: ha Fészkelés és haladó ellenőrzések
Kicsit kibővíthetjük az utolsó példát, és a segítségével ellenőrizhetjük az egyenlőtlenséget != ahelyett ==, add be a beágyazott hurkokat, és egyszerre használj néhány Bash natív speciális változóellenőrzést.
Meghatározzuk test2.sh alábbiak szerint:
#!/bin/bash
VAR1="${1}"
VAR2="${2}"
if [ ! -z "${VAR1}" -a ! -z "${VAR2}" ]; then
if [ "${VAR1}" != "${VAR2}" ]; then
echo 'true'
else
echo 'false'
fi
else
echo "Assert: Either VAR1 (value: '${VAR1}'), or VAR2 (value: '${VAR2}'), or both, are empty!"
fi
Ebben a szkriptben kicseréltük a. Kódolt értékeinket 1 mindkettőnek VAR1 és VAR2 két speciális változóval, nevezetesen ${1} és ${2}, amelyek kiállnak az első és a második opció / paraméter, a parancssorból a parancsfájlba került. Újra futtathatóvá tesszük a szkriptünket, és különféle rossz opciókombinációkkal hajtjuk végre.
![]()
Az -z kód jelentése ellenőrizze, hogy egy paraméter üres-e vagy sem. Az eredményt elutasítjuk (vagyis az igen nem lesz, a nem pedig igen, vagy inkább / jobb igaz hamis, a hamis igaz lesz) felkiáltójel használatával (!) előtt -z jelölje be. Ezután használunk egy ÉS záradék (azaz a ÉS záradéknak igaznak kell lennie).
Más szavakkal, ahogyan elolvashatná a if [ ! -z "${VAR1}" -a ! -z "${VAR2}" ]; vonal a természetes nyelvben az A VAR1 és a VAR2 sem lehet üres. Láthatjuk, hogy változóinkat helyesen ellenőrzi ez a feltételes utasítás, mivel minden alkalommal, amikor csak egy változót próbálunk átadni, vagy két változót, ahol az egyik üres, a program a else záradék, amely a helytelen szkriptopció-használatról számol be.
Végül az első belsejében if feltételes utasítás, van egy másodlagos (számítógépes zsargon: beágyazott) feltételes nyilatkozat. Ez a kijelentés az egyenlőtlenséget ellenőrzi a használatával nem egyenlő (!=). Valóban, amikor két különböző értéket adunk át, nevezetesen 1 és 2 a szkripthez a kimenet igaz: ezek a számok egyenlőtlenek.
Bash feltételes tesztelése: elif
Amikor elkezd bonyolultabb és mélyebben beágyazott utasításokat fejleszteni a Bash-ban, hamarosan kiderül, hogy van olyan eset, amikor egyre mélyebben ágazik be beágyazott kódba, és a kód a bonyolultabb rétegek miatt bonyolultabbnak tűnik. Gyakran, bár nem mindig, de lehet használni elif nyilatkozat ilyen esetekben. Például:
#!/bin/bash
if [ "${1}" -lt 2 ]; then
echo "less then 2"
else
if [ "${1}" -lt 4 ]; then
echo "less then 4"
else
if [ "${1}" -lt 6 ]; then
echo "less then 6"
fi
fi
fi
if [ "${1}" -lt 2 ]; then
echo "less then 2"
elif [ "${1}" -lt 4 ]; then
echo "less then 4"
elif [ "${1}" -lt 6 ]; then
echo "less then 6"
fi
Miután ezt a szkriptet test3.sh néven definiáltuk, futtathatóvá tesszük és futtatjuk.
![]()
A két kódblokk pontosan ugyanazt csinálja: ellenőrzik, hogy az első opcióként átadott érték a szkriptnek (1., 3. és 5. ) kisebb, mint (-lt) az értékek 2., 4. és 6. ábra sorban. Látjuk, hogy a két blokk pontosan ugyanúgy működik.
A második kódblokk azonban, amely a elif állítások (amelyek szintén olvashatók különben ha állítások) helyett másképp..ha feltételes utasítás blokkok. A második kódblokk nemcsak rövidebb, hanem tisztább, tisztább és könnyebben elérhető. Vegye figyelembe, hogy kombinálhatja is else és elif állítások kombinálva, beágyazott módon stb.
Következtetés
A Bash kód írása sokáig élvezetes gyakorlat, volt és valószínűleg még sokáig eljön. A jól kidolgozott feltételes állítások létrehozása ennek szerves és közhelyes része. Ebben a rövid bemutatóban megnéztük if, then, else, elif és fi nyilatkozatok. A különféle feltételes utasítások segítségével nagyszerű és tiszta kódot készíthet. Élvezd!
