10 Bash For Loop példa magyarázatokkal

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.

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.

  Hogyan tudja az internetszolgáltatóm megállapítani, hogy BitTorrentet használok?

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.

  Gmail-profilképének megváltoztatása

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?