Bash 'Until' Loop: oktatóanyag és példák

Az „amíg” ciklus használata egy Bash-szkriptben a parancs(ok) közötti ciklushoz.

A Bash (Bourne Again Shell) egy shell parancssor és szkriptnyelv GNU/Linux operációs rendszerekben. Ez a legtöbb Linux disztribúció alapértelmezett shellje.

A legtöbb szkriptnyelvhez hasonlóan a Bash hurokszintaxist biztosít a hasonló feladatok többszöri megismétléséhez. Ebben a cikkben megtudjuk, hogyan kell használni a amíg hurok Bashban.

Bevezetés

A amíg A Bash-beli ciklus a parancs(ok) (végrehajtott parancsok) többszöri végrehajtására szolgál egy másik parancs(ok) kimenete alapján (feltétel parancsok). A végrehajtott parancsok mindaddig futnak, amíg a feltétel parancs meghiúsul (azaz nem nulla állapotot ad vissza. A Linux bármely parancsa 0-t ad vissza, ha sikeres, és egy nullától eltérő egész számot, ha sikertelen). Ez pontosan az ellenkezője míg ciklus, amelyben a végrehajtott parancsok addig futnak, amíg a feltétel parancs sikeres lesz.

Ha több feltételparancs is van, az utasítás csak a lista utolsó parancsának állapotát veszi figyelembe, azaz a ciklus addig fut, amíg a lista utolsó parancsa meghiúsul.

Általános szintaxis

Az általános szintaxis a amíg A ciklus a Bashban:

amíg elkészül

A végrehajtási parancslista addig fut, amíg a feltételparancslista utolsó parancsa meghiúsul. Ha az utolsó parancs sikeres, a ciklus kilép.

A felhasználók bármilyen végrehajtható fájlt megadhatnak a parancslistákban. Lehetnek szabványos Linux programok vagy egyéni felhasználói programok vagy szkriptek. Minden parancsnak vagy egy új sorban kell lennie, vagy pontosvesszővel kell elválasztani ugyanabban a sorban.

Lássunk néhány példát.

Hurkolás addig, amíg egy változónak meghatározott értéke van: A következő ciklus a változó értékéig fut x a 10.

x=0 mindaddig, amíg [[ $x -eq 10 ]] meg nem visszhangzik $x ((x++))

Minden iterációban ellenőrizzük, hogy x értéke 10-e. Az érték ellenőrzése a teszt parancs. [[ Kifejezés ]] a tesztparancs szintaxisa (lásd férfi teszt).

Aztán belül a csinálni... kész blokkot, egyszerűen kiírjuk x értékét, és növeljük. A ciklus akkor lép ki, ha a feltétel parancs sikeres, azaz amikor $x egyenlő 10.

Jegyzet: Az „ig” ciklusban használandó indexváltozót vagy az „ig” ciklus előtt, vagy a feltétel parancsokban kell inicializálni, szemben a for ciklussal, amely lehetővé teszi a változó implicit inicializálását.

Több feltétel paranccsal: A következő ciklus 5 nevű könyvtárat hoz létre dir0, dir1, ... dir4.

z=0 echo "Hi" echo "Bye" [[ $z -eq 5 ]] do echo "Dir$z létrehozása..." mkdir dir$z ((z++)) kész

Az első parancsok echo „Hi” és echo „Bye” egyszer teljesen végrehajtódnak; sikerük vagy kudarcuk semmilyen hatással nincs arra, hogy mennyi ideig fog futni a hurok.

Ezután a z változó értékének ellenőrzésére szolgáló tesztparancs végrehajtásra kerül. Amíg ez a parancs meghiúsul, azaz z értéke 5, addig a feltételparancsok és a végrehajtott parancsok sorrendben futnak. Itt minden iterációhoz először a 2 echo parancsot futtatja a feltételben, majd a 3. feltétel parancs ellenőrzi a z értékét. Ha nem 5, akkor belép a ciklusba és végrehajtja a megadott parancsokat.

Szünet és Folytatás

Megszakítási nyilatkozat feltételes kilépéshez

Használhatjuk a feltételes utasítást is ha a hurkon belül. A ha utasítás használható a szünet egy utasítás a ciklusból való feltételes kilépéshez.

x=0, amíg [[ $x -eq 10 ]] tegye ha [[ $x -eq 5 ]] break fi echo $x ((x++)) kész

A fenti till ciklus 0 és 4 közötti számokat ír ki. Majd ha i értéke 5, akkor kitör a ciklusból. Ez különösen akkor hasznos, ha egy ciklusból ki kell lépni, amikor egy parancs adott kimenetet ad.

Folytassa az utasítást az iteráció feltételes kihagyásához

Bashnak is van a folytatni utasítással kihagyja az iteráció fennmaradó részét a ciklusban, ha egy adott feltétel teljesül.

x=0-ig [[ $x -eq 10 ]] tegye ha [[ $x -eq 5 ]] folytassa fi echo $x ((x++)) kész

A fenti ciklus 0 és 10 közötti számokat nyomtat, kivéve 5-öt, mert az iteráció során x=5 van egy folytatási utasítás, amely kihagyja a kód többi részét a ciklusban az iteráció elején x=6.

Hurok használata: Scriptek és parancssor

A hurok szintaxisok a Bash shellben közvetlenül vagy egy végrehajtható shell parancsfájlból használhatók. Hasonló számára és míg hurkok, egyszer an amíg A ciklus szintaxisa be van írva a parancsértelmezőn, a shell folytatja a promptot, hogy a felhasználó folytassa a hurkolandó parancsokat.

Vagy a felhasználó elmentheti ezt egy szkriptfájlba, és végrehajthatja a parancsfájlt.

A #!/bin/bash az elején megadja a fájl végrehajtásakor használandó értelmezőt. Bár manapság a Bash a leggyakrabban használt shell, néhány felhasználó előnyben részesíti az ehhez hasonló shelleket zsh, amelyet a fájl elején a bash helyett kell megadni.

Végrehajtási engedélyek megadása ehhez a fájlhoz futtassa:

chmod +x test.sh

Végül, a fájl végrehajtásához, fuss:

./test.sh

Következtetés

A amíg A ciklus egy másik fontos funkció a Bash szkriptekben. Különös jelentősége van az összetett szkripteknél, amikor egy bizonyos programcsoport várhatóan sikertelen állapotot ad vissza, és más parancsokat kell végrehajtani a hiba naplózásához, a hiba részletes megjelenítéséhez vagy egyszerűen csak néhány alternatív program végrehajtásához.