, amíg és amíg – CloudSavvy IT

Avatar admin | 2021.02.02. 13 Views 0 Likes 0 Ratings

13 Views 0 Ratings Rate it

Shutterstock / jeep5d

A legtöbb programozási nyelv a kódolási sorok különféle formáit támogatja. A Bash natív módon támogatja a ‘while’ ciklusokat, a ‘amíg’ ciklusokat és a legismertebb, a ‘for’ ciklusokat. Ez a cikk mindhármat bemutatja és tárgyalja.

Mik Bash hurkok?

Hogy ezt egy kicsit jobban meghatározhassuk, a kérdéssel kell kezdenünk mik a hurkok. A hurkok egy programozási nyelv konstrukciója, amely lehetővé teszi a fejlesztő számára, hogy megismételje (azaz hurokba állítsa) a kód bizonyos részeit, vagy az összes részét egy ilyen hurokdefinícióban. Most már könnyű meghatározni Bash hurkok mint bármelyik Bash-ben használt hurok programozási nyelv konstrukció!

A Bash natív módon támogatja a „for”, „amíg” és „while” alapú ciklusokat. Ezek mindegyikének megvannak a maga előnyei, de már csak a fő szóhasználat megnézésével is megértheti jelentésüket. Például a „amíg” elgondolkodik azon, hogy természetesen gondolkodjon azon, hogy „csináljon valamit, amíg”, és ez valóban az, amit egy Bash „amíg” hurok tesz; hurkol egy bizonyos mennyiségű (vagy az összes) kódot, amíg egy bizonyos feltétel nem teljesül.

Hasonlóképpen a ‘while’ ciklusok addig futnak, amíg egy feltétel már nem igaz. Végül a „for” ciklusok ciklusához például meghatározott számú alkalommal, hasonlóan ahhoz, ahogyan azt írnánk, hogy „70-szer, csinálj…”. Ez segít abban, hogy logikusan megértsük azokat az egyedi szolgáltatásokat, amelyeket az egyes ciklusok biztosítanak számunkra, és hogy olvashatóbb kódot valósítsunk meg.

mert Alapú Bash Loops

E cikk alkalmazásában megnézzük a definíció újabb formáját Bash hurkokért. Valamivel régebbi, kevésbé modern definíciója mert a Bash hurkok például így nézhetnek ki: for i in $(seq 1 5); do echo $i; done. Hasonlítsuk össze ezt egy tisztább, jobban strukturált, modern megjelenéssel mert hurok:

for ((i=1;i<=5;i++)); do echo $i; done

Bash alapú hurokhoz

Ez egyszerű mert alapú Bash egyvonalas (a Linux / Bash körökben gyakran használt kifejezés egyetlen sorra írt mini-szkript fogalmának megalkotásához) az 1–5-ös számokat egymás után rendezi. A kezdőértéket beállítottuk a i változó ($i) az érték hozzárendelésével 1 ugyanarra, mint a mi első részünk mert hurokdefiníció, amelyet a ; határoló.

Ezután meghatározzuk, hogy csak egyet kell felmennünk “kisebb vagy egyenlő öt” használva i<=5. Ezután jelezzük, hogy mi történjen az egyes körök végén, ez pedig a változó növelése i egy, vagy egy általánosan használt (például a C ++ nyelven is) kódoló rövidítéssel ez i++.

Végül a gombbal adjuk meg a hurok kódunk kezdetét do, vagyis miután megszüntette a mi for hurokdefiníció, bármely más utasítás megszüntetéséhez hasonlóan, a ; előtte do. A cikluskód végét a használatával is megadjuk done és mi echo (kinyomtatni) a változónk értékét én között a do és done.

Külön említsük meg azt is, hogy a do Maga a záradék nem fejeződik be ;, és ez hibához vezetne. Tekintsük a do előtag a tennivalóhoz, és ennek több értelme van. Talán ez az egyik oka annak, hogy időnként tisztább a dolgokat többsoros szkriptbe tenni, mint a do egyszerűen egy sor utolsó szava lehet.

Még más típusú hurkok definiálásakor is fenntartjuk a do és done záradékokat, és mindig ügyelünk arra, hogy megszüntessük a hurok definíciónkat (azaz a do) val vel ;, valamint megszünteti az egyes állítások végét a mi oldalunkon belül do...done hurok meghatározása ;.

Tegyük ezt egy kis szkriptbe, hogy tisztábban lássuk, hogyan működhetnek a dolgok így:

#!/bin/bash

for ((i=1;i<=10;i+=2)); do 
  echo $i
done

Bash alapú ciklusszkripthez

Miután a szkriptet futtathatóvá tette chmod +x test.sh, ugyanezt hajtjuk végre. Néhány apró változtatást vezettek be a szkriptben. Vegye figyelembe, hogy ezúttal hogyan növeljük a változót i minden alkalommal kettővel. Ez egy másik kódoló rövidítés, nevezetesen i+=2 amely így olvasható növelje i kettővel. Írni is lehet i=i+2 ugyanazon a helyen, és pontosan ugyanúgy működik.

Látjuk, hogy itt kezdjük 1, és növelje 2 valahányszor átmegyünk a hurkon, és ezzel végződünk 9.. Az ok, amellyel véget ér 9. az, hogy a maximális érték 10.. Így utána 9. a következő érték az lenne 11., amely akkor nagyobb 10. és így nem jelenik meg / hurkolt.

Vegye figyelembe azt is, hogy a ; visszhangvonal után eltávolították. Ez azért van, mert nincs szükség az utasítás végének felmondására, ha helyette sor végi helyzet / karakter van. Ez a helyzet itt; a. után nincs más parancsunk echo $i és a sor azonnal véget ér (a sor végén lévő szóközök is rendben lennének, az az elv, hogy egyszerűen nincs újabb parancs, hacsak az új parancsot nem előtagolja (és az előzőt nem fejezi be) ;).

míg Alapú Bash Loops

Vessünk egy pillantást egy Bash hurokra – ugyanezt használva do...done hurokdefinícióval definiálhatjuk a míg az alapú Bash hurok amely addig tart, amíg egy adott feltétel igaz.

i=1; while [ $i -le 5 ]; do echo $i; i=$[ i + 1 ]; done

A Bash while alapú hurok

Ebben a példában ugyanazt tesszük, mint az első mert alapú hurok példa. Míg a meghatározás összetettebbnek tűnik (és így a mert lehet, hogy a ciklus jobban megfelel erre a konkrét felhasználási esetre), érdekes látni, hogyan definiálhatjuk a míg hurok ugyanúgy.

Itt állítottuk be először i változó, manuálisan, egy külön parancsban, amelyet a ;, nak nek 1. Ezután kezdjük a míg ciklus, ahol feltételt állítunk be, nagyon hasonló módon, mint egy if utasítás (a cikk végén található egy link a if állítások, ha szeretne többet megtudni), ahol ellenőrizzük, hogy a i változó alacsonyabb vagy egyenlő (-le) azután 5..

Ezek után megvan a szokásos do...done blokk, amelyben mi echo változónk, majd ezt követően egy új utasításban, manuálisan növeli a értékünket i változó eggyel egy matematikai számításban, amelyet a $[...] Bash számítási idiómák. Nézzük a következő pénztárt an amíg az alapú Bash hurok

amíg Alapú Bash Loops

Az eddig tanultakkal felvértezve most könnyebben értékelhetjük a következőket amíg alapú Bash hurok:

i=1; until [ $i -gt 5 ]; do echo $i; i=$[ i + 1 ]; done

A Bash-ig alapuló hurok

Itt keressük az állapotot én akkor nagyobb 5. hogy igaz legyen. Addig (azaz egy amíg alapú hurok), kinyomtatjuk (a echo) változónk én és ugyanezt növeli az eggyel, az előzőnkhöz hasonlóan míg alapú példa.

Láthatjuk, hogy a amíg parancs nagyon hasonlít a míg parancs. Vegye figyelembe azt is, hogy a for alapú parancs, ezek a parancsok vagy a igaz fennmaradó állapot ( míg), vagy a a igaz feltétel megkezdéséhez ( amíg). Ez lehetővé teszi más parancsok használatát is, amelyek például true / false kimenetet adhatnak vissza, például grep -q:

echo 1 > a
while grep -q '1' ./a; do echo 'yes'; sleep 5; done

Valódi állapot ellenőrzése a grep -q használatával egy idő alapú Bash ciklusban

Itt adjuk hozzá a számot 1 nevű fájlba a, és ellenőrizze a szám létezését 1 azon a fájlon belül a grep -q (csendes grep). Folytatjuk ezt (pl míg), amíg ez már nem igaz. Bár igaz, kinyomtatjuk a szöveget Igen és szüneteltesse a hurkot öt másodpercig a sleep 5. Vegye figyelembe, hogy az egyes parancsok hogyan fejeződnek be ; újra.

Körülbelül 17 másodperc múlva megszakítjuk a szkriptünket a CTRL + c használatával, amely az univerzális módszer egy futó folyamat leállításához a Bash-ban (az erősebb és hatékonyabb CTRL + z mellett, amely azonnal szünetelteti a folyamatot, de ez egy másik cikkre vonatkozik!)

Csomagolás

Ebben a cikkben áttekintettük a Bash-ban natív módon elérhető „for”, „while” és „amíg” ciklusokat. Ha érdekli a több Bash, nézze meg Feltételes tesztelés Bash-ban: ha, akkor, más, elif és Bash függvények és helyi változók.

Élvezd!


Source link


13 Views 0 Ratings Rate it

  • Minden jog fenntartva 2019-2020. Hogyankészítsek.Hu Impresszum Adatkezelési szabályok