Bash „While” ciklus: oktatóanyag és példák

Bash „While” ciklus: oktatóanyag és példák

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 whilehurkot a Bashban.

Bevezetés

A whileBash ciklusa 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 siker esetén, és nem nulla egész számot 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

A whileBash ciklus általános szintaxisa a következő :

while 
do
  
done

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 addig fut, amíg a változó xértéke nem egyenlő 10-zel.

x=0
while [[ $x -ne 10 ]]
do
  echo $x
  ((x++))
done

Minden iterációban ellenőrizzük, hogy x értéke 10-e. Az érték ellenőrzése a testparanccsal történik. [[ Expression ]]a tesztparancs szintaxisa (lásd man test). Mivel itt az -neoperátort használjuk (ami 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 az érték x-ből 10.

Ezután a do...doneblokkon belül 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.

Megjegyzés: 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
while
echo "List of files:"
ls -l
[[ $z -ne 5 ]]
do
  echo "Creating dir$z..."
  mkdir dir$z
  ((z++))
done

Első parancsok, echo "List of files:"és ls -legyszer 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 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.

Bash „While” ciklus: oktatóanyag és példák

Szünet és Folytatás

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

A cikluson if belül is használhatjuk a feltételes utasítást  . Az  if utasítás egy  break utasítással együtt használható a ciklusból való feltételes kilépéshez.

x=0
while [[ $x -ne 10 ]]
do
  if [[ $x -eq 5 ]]
    break
  fi
  echo $x
  ((x++))
done

A fenti while ciklus 0 és 4 közötti számokat ír ki. Amikor 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

A Bash-nek van egy  continue utasítása is, hogy kihagyja az iteráció hátralévő részét a ciklusban, ha egy adott feltétel teljesül.

x=0
while [[ $x -ne 10 ]]
do
  if [[ $x -eq 5 ]]
    continue
  fi
  echo $x
  ((x++))
done

A fenti ciklus 0 és 10 közötti számokat fog kiírni, kivéve 5-öt, mert az iteráció során  x=5 van egy folytonos 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ó a forés whilehurkok, ha egy while hurkot szintaxis bekerül a héj, a héj folytatja a prompt, hogy a felhasználó továbbra is a parancsok hurkolt.

Bash „While” ciklus: oktatóanyag és példák

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

Bash „While” ciklus: oktatóanyag és példák

Az  #!/bin/bash elején a fájl végrehajtásakor használandó értelmezőt határozza meg. Bár manapság a Bash a leggyakrabban használt parancsértelmező, néhány felhasználó előnyben részesíti az olyan parancsértelmezőket, mint a  zsh, amelyeket a bash helyett a fájl elején kell megadni.

Ha végrehajtási engedélyt szeretne adni  ehhez a fájlhoz, futtassa:

chmod +x test.sh

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

./test.sh

Következtetés

A whileciklus, a hasonló forés a untilciklusok fontos jellemzői a Bash szkriptelésnek. 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.

Tags: #bash

Telepítse a TeamViewer 8-at az Ubuntu 12.04-hez

Telepítse a TeamViewer 8-at az Ubuntu 12.04-hez

Ebben a videóban a TeamViewer 8 ubuntu 12.04 rendszerhez való telepítését és használatát mutatom be teljes útmutatóval. De ez ugyanúgy fog működni Windowson is.

A Linux Kernel 5.14 újdonságai: 8 fő fejlesztés

A Linux Kernel 5.14 újdonságai: 8 fő fejlesztés

Gyakran hivatkozunk a Linuxra mint operációs rendszerre, de valójában ez csak a kernel. És az említett kernel elérte az 5.14-es verziót, amely ingyenes és nyílt forráskódú szoftverekkel bővíti a jelenleg használható hardvereket, valamint az említett eszközökön elérhető dolgokat.

KDE Connect vs. Warpinator: melyik a legjobb a fájlátvitelhez?

KDE Connect vs. Warpinator: melyik a legjobb a fájlátvitelhez?

A felhőalapú tárolás elég egyszerűvé tette a fájlok vezeték nélküli átvitelét ahhoz, hogy a háttérben automatikusan megtörténjen. De vajon tényleg megéri-e hozzáférést adni néhány cégnek a fájlokhoz, csak azért, hogy áthelyezzék őket egyik gépről a másikra, gyakran ugyanabban az épületben? Néha akár ugyanabban a szobában!

Windows-programok és játékok futtatása Linuxon a Wine segítségével

Windows-programok és játékok futtatása Linuxon a Wine segítségével

A Wine, amely a Windows Emulator rövidítése, egy Linux-program, amely lehetővé teszi Windows-szoftverek futtatását Linuxos gépeken. Azt

Hogyan készítsünk gépelési tesztet Linuxon a tt segítségével

Hogyan készítsünk gépelési tesztet Linuxon a tt segítségével

A technika modern korszakában a gépelés az egyik leggyakoribb tevékenységgé vált számos szakmában. Ha megtanul gyorsabban és pontosan írni, akkor több dolgot is elvégezhet ugyanannyi idő alatt.

Bash „While” ciklus: oktatóanyag és példák

Bash „While” ciklus: oktatóanyag és példák

A while ciklus használata a Bash szkriptekben a parancs(ok)on keresztüli iterációhoz.

Sebességtesztek futtatása Linux parancssorból a Speedtest-cli használatával

Sebességtesztek futtatása Linux parancssorból a Speedtest-cli használatával

A Speedtest.net az internetkapcsolat sebességének tesztelésére szolgáló szolgáltatás. A letöltéshez egy közeli speedtest.net szervert használ

A KDE Plasma telepítése Ubuntu-ra

A KDE Plasma telepítése Ubuntu-ra

A Linux valóban moduláris operációs rendszer. Például nem csak az asztali háttérképet, hanem a teljes asztali környezetet is megváltoztathatja. Más operációs rendszerek, például a Windows vagy a macOS előre beállított asztali rendszerrel rendelkeznek, amelyet nem lehet megváltoztatni.

Java telepítése Ubuntu 20.04-re

Java telepítése Ubuntu 20.04-re

JRE és JDK telepítése Ubuntu 20.04-re

Duplikált fájlok keresése és eltávolítása Linuxon az fdupes használatával

Duplikált fájlok keresése és eltávolítása Linuxon az fdupes használatával

Ha nagy mennyiségű adathordozóval és dokumentummal dolgozik, gyakran előfordul, hogy ugyanabból a fájlból több példány is felhalmozódik a számítógépén. A következő elkerülhetetlenül egy zsúfolt tárhely, amely tele van redundáns fájlokkal, ami rendszeres ellenőrzést vált ki a duplikált fájlok keresésére a rendszeren.