A „while” ciklus használata a Bash szkriptekben a parancs(ok)on keresztüli iterációhoz.
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ó feladat többszöri megismétléséhez. Ebben a cikkben megtudjuk, hogyan kell használni a míg
hurok Bashban.
Bevezetés
A mí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 sikeresen le nem fut (azaz 0 állapotot ad vissza. Linuxban minden parancs 0-t ad vissza, ha sikertelen, és nem nulla egész számot ad vissza sikertelenség esetén).
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 sikeresen le nem fut.
Általános szintaxis
Az általános szintaxis a míg
A ciklus a Bashban:
miközben kész
A végrehajtási parancslista addig fut, amíg a feltétel parancslista utolsó parancsa sikeresen le nem fut, és 0 állapottal ki nem lép. Az iteráció során, amikor az utolsó feltétel parancs meghiúsul, a ciklus kilép.
A felhasználó bármely futtatható fájlt megadhat 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
nem egyenlő 10-el.
x=0 miközben [[ $x -ne 10 ]] visszhangzik $x ((x++)) kész
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
). Itt mivel használjuk a -ne
operátor (amely a „nem egyenlő”-t jelenti), a tesztparancs 0-t, azaz sikert ad vissza, ha x értéke nem 10, és nem nulla értéket ad vissza, azaz sikertelenséget, ha x értéke 10.
Aztán belül a csinálni... kész
blokkot, kiírjuk x értékét és növeljük. Ha x értéke 10, a tesztparancs nem nulla állapotot ad vissza, és a ciklus kilép.
Jegyzet: A while ciklusban használandó indexváltozót vagy a while 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, miközben echo "Fájlok listája:" ls -l [[ $z -ne 5 ]] do echo "Dir$z létrehozása..." mkdir dir$z ((z++)) kész
Első parancsok echo "Fájlok listája:"
és ls -l
egyszer teljesen végrehajtódik; 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 a z értéke nem lesz 5, a tesztparancs sikeres állapotot ad vissza, és így a ciklus tovább fut. A feltételparancsok és a végrehajtott parancsok sorrendben futnak. Itt minden iterációnál először az echo parancsot és az ls in condition parancsot futtatja, 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
utasítást a ciklusból való feltételes kilépéshez.
x=0 míg a [[ $x -ne 10 ]] megteszi, ha [[ $x -eq 5 ]] break fi echo $x ((x++)) kész
A fenti while ciklus 0-tól 4-ig terjedő számokat fog kiírni. Majd ha az i értéke 5, 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, hogy kihagyja az iteráció fennmaradó részét a ciklusban, ha egy adott feltétel teljesül.
x=0 míg [[ $x -ne 10 ]] csináld, ha [[ $x -eq 5 ]] tovább 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 mí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 míg
hurok, hasonló számára
és amíg
A ciklusok a Bash-szkriptek fontos jellemzői. A While ciklus hasonlóképpen használható, mint az till ciklus, azzal a különbséggel, hogy alternatív parancsok/programok futtatására használják, ha egy adott program sikeres. Ez gyakran hasznos a fejlett hálózati szkriptekben, rendszerkarbantartó szkriptekben stb.