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 '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 while
hurkot a Bashban.
Bevezetés
A while
Bash 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 while
Bash 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 test
paranccsal történik. [[ Expression ]]
a tesztparancs szintaxisa (lásd man test
). Mivel itt az -ne
operá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...done
blokkon 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 -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 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
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 while
hurkok, 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.
Vagy a felhasználó elmentheti ezt egy szkriptfájlba, és végrehajthatja a parancsfájlt.
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 while
ciklus, a hasonló for
és a until
ciklusok 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.
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.
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.
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!
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
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.
A while ciklus használata a Bash szkriptekben a parancs(ok)on keresztüli iterációhoz.
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 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.
JRE és JDK telepítése Ubuntu 20.04-re
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.