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!