10 Bash For Loop-eksempler med forklaringer

For Loop er en integrert del av ethvert programmeringsspråk. Den lar programmer iterere gjennom et visst antall elementer.

For eksempel, hvis du vil gå gjennom en liste eller en rekke «n» elementer, vil du bruke en for Loop. La oss ta et enkelt eksempel:

1Fiolett2Indigo3Blå4Grønt Regnbuebord

For å utføre noen handlinger eller gjenta elementene i tabellen ovenfor, krever vi en For Loop.

Bash For Loop

I et bash-skript er For Loop-syntaksen som følger:

#!/bin/bash

for VAR in 1 2 3 4 5.....N

do

 ACTION 1

 ACTION 2

 .....

done

Bash For Loop er ganske grei. Den første linjen #!/bin/bash indikerer at koden er et bash-skript. VAR står for den midlertidige variabelen som brukes For Looping. N indikerer maksimalt antall iterasjoner. «do» og «done» starter og stopper henholdsvis sløyfen. Handlinger er kommandoene som utføres i løkken.

Vi kan utføre Bash For Loop med forskjellige variabler, som liste, strenger, heltall og matriser. Denne artikkelen vil vise noen vanlige eksempler på Bash For Loop.

Du kan kjøre disse programmene direkte på bash-kommandolinjen eller lagre dem i en fil og kjøre filen ved å bruke kommandoen Bash filename.sh.

Leser statisk liste

Tenk på følgende liste – rainbowColorList = Fiolett, Indigo, Blå, Grønn, Gul, Oransje, Rød

Vi kan skrive ut strenglisten ovenfor ved å bruke Bash For Loop som følger:

#! /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

Utgangen vil være listen over elementer i en ny linje.

#Output

Violet
Indigo
Blue
Green
Yellow
Orange
Red

Lese en matrise

Syntaksen for å deklarere en matrise er forskjellig. Bruk parenteser for hvert element (streng).

rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")

for colors in "${rainbowArray[@]}"; do

     echo "I like $colors"

done

«@» brukes til å iterere gjennom hvert element i matrisen.

#Output

I like Violet
I like Indigo
I like Blue
I like Green
I like Yellow
I like Orange
I like Red

Vi kan også bruke For Loop til å skrive ut indeksene og array-elementene.

#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

Merk at vi bruker «!» i løkken for å få elementindeksen.

  Slik fikser du ERR_INTERNET_DISCONNECTED-feilen [SOLVED]

Itererende rekkevidde av tall

Vi kan bruke Bash For Loop til å iterere over en rekke tall.

#iterating over range of numbers

echo "Countdown begins..."

for N in {10..0}

do

    echo "$N"

done

«..» indikerer en rekke tall.

#Output

10
9
8
7
6
5
4
3
2
1
0

Vi kan også hoppe over telletall ved å spesifisere området.

I eksemplet nedenfor hopper vi over tellingen med 3.

#iterating with skip counting

echo "Countdown begins..."

for N in {30..0..3}

do

    echo "$N"

done

Programmet ovenfor starter med 30 som det første tallet og teller ned til 0. Den siste parameteren i for-løkken «3» spesifiserer antallet hoppeteller.

#Output

30
27
24
21
18
15
12
9
6
3
0

Strenger og tegn

Vi kan gjøre mange interessante strengoperasjoner med Bash For Loop.

For eksempel kan vi lese hvert tegn i en streng ved å bruke «seq»-operatoren i en For Loop:

#read characters of a string

myword="welcome"

for i in $(seq 1 ${#myword})

do

 echo "${myword:i-1:1}"

done

Merk at «seq» skal starte med 1 for å få det første tegnet først.

#Output

W
e
l
c
o
m
e

Vi kan også skrive ut strengene atskilt med mellomrom én etter én:

#read each word from a sentence

mysentence="Welcome to tipsbilk.net. One stop hub for all techies"

for word in $mysentence; do

    echo $word

done
#Output

Welcome 
to 
tipsbilk.net. 
One 
stop 
hub 
for 
all 
techies

Uttrykkene

I likhet med alle andre programmeringsspråk som Java, kan vi plassere uttrykk inne i en Bash For Loop.

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

Lese kommandolinjeargumenter

For å lese fra kommandolinjeargumenter bruker vi «les»-kommandoen. I eksemplet nedenfor vil vi få noen tall fra brukeren og skrive ut summen ved å bruke Bash For Loop. Vi bruker variabelen total for å lagre mellom- og sluttsummen eller summen av tallene.

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"

Utgangen er:

#Output

Enter the numbers you want to add: 3 4 66
Sum of the numbers is: 73

Finne oddetall

For å finne oddetall og partall mellom 1 til 10 (eller et hvilket som helst tall N), bør vi bruke if-betingelsen sammen med Bash for Loop. For å bestemme et partall deler vi tallet med 2, og hvis resten er 0, kategoriserer vi det som partall ellers oddetall.

#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

Merk at vi gir området som 10 i eksemplet ovenfor. Vi kan endre dette tallet for å få partall og oddetall mellom et hvilket som helst område. Du kan også prøve å lese nummeret fra brukeren ved å bruke «les»-kommandoen vi lærte i forrige seksjon.

#Output

Even numbers are: 2 4 6 8 10
Odd numbers are: 1 3 5 7 9

Uendelig sløyfe

Infinity eller infinite Loop er en loop som ikke slutter å kjøre, og programmet må tvinges til å slutte med Ctrl+C. Vi kan enkelt lage en uendelig løkke ved å bruke «; ;» operatør inne i for-løkken:

for (( ; ; ))

do

  echo "Welcome to tipsbilk.net"

done
#Output

Welcome to tipsbilk.net
Welcome to tipsbilk.net
Welcome to tipsbilk.net
Welcome to tipsbilk.net
Welcome to tipsbilk.net
Welcome to tipsbilk.net
Welcome to tipsbilk.net
Welcome to tipsbilk.net
Welcome to tipsbilk.net
Welcome to tipsbilk.net
^C
$

Pauseerklæring

Break-utsagn brukes til å bryte fra sløyfen når en «hvis»-betingelse er oppfylt.

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"

I dette eksemplet prøver vi å finne fargen grønn. For-Loop går gjennom hver farge, og når den grønne fargen er funnet, kommer programmet ut av løkken på grunn av break statement.

#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

Fortsett uttalelse

Fortsett brukes til å hoppe over gjeldende sløyfe og gå til neste basert på en bestemt tilstand. For eksempel, hvis du ikke ønsker å skrive ut fargen «Grønn» fra vårt forrige program, kan vi sette fortsett, og alle andre farger unntatt Grønn vil vises.

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

Siste ord

Vi har dekket de vanligste bruksområdene for en Bash For Loop, ved å bruke strenger, heltall, matriser og liste. Hvis du lærer Linux, men har en Windows 10-maskin, kan du bruke WSL-funksjonen og installere Linux på din Windows-maskin.

  WebSphere 8.5.x Dynamic Cluster

Du kan deretter bruke Linux-terminalen på samme måte som CMD.

Deretter kan du sjekke ut Hvordan kjøre bash-skript med Python?