ha, akkor, más, elif – CloudSavvy IT

Avatar Gadam | 2021.01.29. 22 Views 0 Likes 0 Ratings

22 Views 0 Ratings Rate it

[ad_1]

Bash Shell

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

Egyszerű, ha példa a Bash-ban

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.

In-script, ha példa változókat és egy else záradékot használ

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.

Összetettebb egyenlőtlenség if utasítás, amely teszteli a változókat is

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.

elif feltételes utasítás példa két különböző megvalósítással

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!

[ad_2]
Source link