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.