A For Loop minden programozási nyelv szerves része. Lehetővé teszi a programok számára, hogy bizonyos számú elemen keresztül ismételjenek.
Például, ha egy listán vagy ‘n’ elemekből álló tömbön szeretne végigmenni, használja a for Loop parancsot. Vegyünk egy egyszerű példát:
1Ibolya2Indigo3Kék4Zöld Szivárványasztal
Bármely művelet végrehajtásához vagy a fenti táblázat elemeinek ismétléséhez For Loop szükséges.
Tartalomjegyzék
Bash For Loop
Bash szkriptben a For Loop szintaxisa a következő:
#!/bin/bash for VAR in 1 2 3 4 5.....N do ACTION 1 ACTION 2 ..... done
A Bash For Loop nagyon egyszerű. Az első #!/bin/bash sor azt jelzi, hogy a kód egy bash szkript. A VAR a For Looping ideiglenes változót jelenti. Az N az ismétlések maximális számát jelöli. ‘do’ és ‘done’ elindítja és leállítja a hurkot. A műveletek a cikluson belül végrehajtott parancsok.
A Bash For Loop-ot különböző változókkal hajthatjuk végre, például listával, karakterláncokkal, egész számokkal és tömbökkel. Ez a cikk néhány gyakori példát mutat be a Bash For Loop-ra.
Ezeket a programokat közvetlenül futtathatja a bash parancssorban, vagy elmentheti őket egy fájlba, és végrehajthatja a fájlt a Bash fájlnév.sh paranccsal.
Statikus lista olvasása
Tekintsük a következő listát – rainbowColorList = lila, indigó, kék, zöld, sárga, narancs, piros
A fenti karakterlánc-listát a Bash For Loop segítségével a következőképpen nyomtathatjuk ki:
#! /bin/sh # Define the list rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red # Comma separator pattern using //,/ for colors in ${rainbowColorList//,/ } do echo $colors done
A kimenet egy új sorban lévő elemek listája lesz.
#Output Violet Indigo Blue Green Yellow Orange Red
Egy tömb olvasása
A tömb deklarálásának szintaxisa eltérő. Használjon zárójelet minden elemhez (String).
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for colors in "${rainbowArray[@]}"; do echo "I like $colors" done
A „@” a tömb egyes elemei közötti iterációra szolgál.
#Output I like Violet I like Indigo I like Blue I like Green I like Yellow I like Orange I like Red
A For Loop segítségével kinyomtathatjuk az indexeket és a tömbelemeket is.
#Printing with index rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for i in "${!rainbowArray[@]}"; do echo "Color at index " $i " : " "${rainbowArray[$i]}" i=$((i+1)); done
#Output Color at index 0 : Violet Color at index 1 : Indigo Color at index 2 : Blue Color at index 3 : Green Color at index 4 : Yellow Color at index 5 : Orange Color at index 6 : Red
Vegye figyelembe, hogy a ‘!’ a ciklusban, hogy megkapja az elemindexet.
Iteráló számtartomány
A Bash For Loop segítségével számos számot ismételhetünk.
#iterating over range of numbers echo "Countdown begins..." for N in {10..0} do echo "$N" done
A „..” egy számtartományt jelöl.
#Output 10 9 8 7 6 5 4 3 2 1 0
A számlálási számokat is kihagyhatjuk a tartomány megadásával.
Az alábbi példában kihagyjuk a 3-mal való számolást.
#iterating with skip counting echo "Countdown begins..." for N in {30..0..3} do echo "$N" done
A fenti program 30-zal kezdődik első számként, és 0-ig számol vissza. A for ciklus utolsó paramétere, a ‘3’ adja meg a kihagyás számlálóját.
#Output 30 27 24 21 18 15 12 9 6 3 0
Húrok és karakterek
A Bash For Loop segítségével sok érdekes karakterlánc-műveletet végezhetünk.
Például egy karakterlánc minden karakterét beolvashatjuk a ‘seq’ operátor használatával a For Loopban:
#read characters of a string myword="welcome" for i in $(seq 1 ${#myword}) do echo "${myword:i-1:1}" done
Vegye figyelembe, hogy a „seq”-nek 1-gyel kell kezdődnie, hogy először az első karakter legyen.
#Output W e l c o m e
A karakterláncokat szóközzel elválasztva egyenként is kinyomtathatjuk:
#read each word from a sentence mysentence="Welcome to etoppc.com. One stop hub for all techies" for word in $mysentence; do echo $word done
#Output Welcome to etoppc.com. One stop hub for all techies
Kifejezések
Bármely más programozási nyelvhez, például a Java-hoz hasonlóan, elhelyezhetünk kifejezéseket a Bash For Loopban.
for (( var=10; var>=0; var-- )) do echo "Counting down...$var" done
#Output Counting down...10 Counting down...9 Counting down...8 Counting down...7 Counting down...6 Counting down...5 Counting down...4 Counting down...3 Counting down...2 Counting down...1 Counting down...0
Parancssori argumentumok olvasása
A parancssori argumentumokból való olvasáshoz a „read” parancsot használjuk. Az alábbi példában néhány számot kapunk a felhasználótól, és kinyomtatjuk az összeget a Bash For Loop segítségével. Az összesített változót a számok köztes és végső összegének vagy összegének tárolásához használjuk.
read -a array -p "Enter the numbers you want to add:" total=0 for i in ${array[@]}; do let total+=$i done echo "Sum of the numbers is: $total"
A kimenet a következő:
#Output Enter the numbers you want to add: 3 4 66 Sum of the numbers is: 73
Páratlan számok keresése
1 és 10 közötti páratlan és páros számok (vagy bármely N szám) kereséséhez használjuk az if feltételt a Bash for Loop mellett. A páros szám meghatározásához elosztjuk a számot 2-vel, és ha a maradék 0, akkor a páros páratlan kategóriába soroljuk.
#declare the list where the even and odd numbers will be sorted and kept evennum="" oddnum="" for (( i=1; i<=10; i++ )) do remainder=$(( $i % 2 )) if [ $remainder -eq 0 ]; then evennum="$evennum $i " else oddnum="$oddnum $i " fi done echo "Even numbers are: "$evennum echo "Odd numbers are: "$oddnum
Vegye figyelembe, hogy a fenti példában a tartományt 10-ben adjuk meg. Ezt a számot megváltoztathatjuk, hogy bármilyen tartomány között páros és páratlan számokat kapjunk. Megpróbálhatja beolvasni a számot a felhasználótól az előző részben megismert „read” paranccsal.
#Output Even numbers are: 2 4 6 8 10 Odd numbers are: 1 3 5 7 9
Végtelen hurok
Az Infinity vagy Infinite Loop olyan ciklus, amely nem hagyja abba a végrehajtást, és a programot le kell kényszeríteni a Ctrl+C használatával. Könnyen létrehozhatunk egy végtelen ciklust a ‘; ;’ operátor a for cikluson belül:
for (( ; ; )) do echo "Welcome to etoppc.com" done
#Output Welcome to etoppc.com Welcome to etoppc.com Welcome to etoppc.com Welcome to etoppc.com Welcome to etoppc.com Welcome to etoppc.com Welcome to etoppc.com Welcome to etoppc.com Welcome to etoppc.com Welcome to etoppc.com ^C $
Szünet nyilatkozat
A Break utasítások arra szolgálnak, hogy kiszakadjanak a ciklusból, ha egy ‘if’ feltétel teljesül.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then break fi echo "Searching for Green, the color now is $color" done echo "I found my color $color"
Ebben a példában a zöld színt próbáljuk megtalálni. A For-Loop minden színen végigfut, és amint megtalálja a zöld színt, a program kilép a ciklusból a break utasítás miatt.
#Output Searching for Green, the color now is Violet Searching for Green, the color now is Indigo Searching for Green, the color now is Blue I found my color Green
Nyilatkozat folytatása
A Continue segítségével átugorhatja az aktuális hurkot, és egy bizonyos feltétel alapján a következőre léphet. Például, ha nem akarja kinyomtatni a ‘Zöld’ színt az előző programunkból, akkor beállíthatjuk a folytatást, és a zöld kivételével az összes többi szín megjelenik.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then continue fi echo "$color" done
#Output Violet Indigo Blue Yellow Orange Red
Végső szavak
Lefedtük a Bash For Loop leggyakoribb felhasználásait, karakterláncok, egész számok, tömbök és listák használatával. Ha Linuxot tanul, de Windows 10-es gépe van, használhatja a WSL funkciót, és telepítheti a Linuxot a Windows gépére.
Ezután a Linux terminált a CMD-hez hasonló módon használhatja.
Ezután megnézheti a Hogyan futtassunk bash szkripteket Python használatával?