30 Bash loop eksempler

tre typer af sløjfer anvendes i bash til forskellige formål. Disse er for, mens og indtil sløjfer. De forskellige anvendelser af disse sløjfer forklares ved at bruge 30 forskellige eksempler i denne artikel.

anvendelse af Bash loops:

  1. brug af for loop til at læse elementer på en liste
  2. brug af for loop til at læse et array
  3. brug af for loop til at læse en liste over strengværdier med mellemrum
  4. brug af For loop i {START..ENDE..INCREMENT} range
  5. brug af loop i {START..ENDE..INCREMENT} range går baglæns
  6. brug af loop med 3 dele og tilstandstæller
  7. brug af loop med 3 dele og flere betingelser og handlinger med komma
  8. brug af uendelig til loop
  9. brug af loop med betinget pause og fortsæt
  10. brug af loop til at læse filnavne ved at globbing
  11. brug af loop til for at læse output fra Find kommando
  12. brug af for loop til at læse filnavne i en mappe rekursivt
  13. brug af loop til at læse filnavne i en mappe rekursivt med betingelse
  14. kører sløjfen indtil fil findes
  15. brug af loop baseret på output fra pakkeliste kommando
  16. brug af loop til at læse hver linje i en fil
  17. brug af loop til at læse hver linje i en fil baseret på en betinget match
  18. brug af Mens loop med en tæller
  19. brug af Mens loop med brugerinput og Afslut, når du vælger Afslut fra en menu
  20. kombination mens sløjfer med getopts
  21. brug indtil loop med en tæller
  22. Afslut indtil loop baseret på brugerinput
  23. brug indlejret mens sløjfer
  24. brug indtil loop til at sove/vente på baggrund opgave startet i script
  25. brug Mens loop til at læse pid fra ps output, der ikke afsluttes
  26. søgning i en streng i en fil ved hjælp af loop og afslut
  27. kombination af bash med curl for at evaluere data fra URL
  28. læsning af data fra en port send af netcat ved hjælp af Mens loop
  29. ping URL ved hjælp af loop
  30. kører top i batch-tilstand ved hjælp af en loop og record output

brug for loop til at læse elementer på en liste

den mest enkle brug af ‘for’ loop er at læse en liste over streng eller numeriske data. Listen over numeriske data gentages ved hjælp af for-in loop i følgende eksempel. Her læses fire tal i variablen, $n i hvert trin i løkken og udskrives. Opret en bash-fil med følgende script og kør fra terminalen.

#!/bin / bash
# for-in loop for at læse en liste over tal
for n i 10 11 17 25
gør
# Udskriv hvert nummer
echo “nummeret er $n”
udført

Output:

Kør scriptet.

$ bash for1.sh

følgende output vises efter kørsel af scriptet.

gå til toppen

brug af for loop til at læse et array

enhver array-variabel indeholder en liste over data, der kan gentages meget let ved hjælp af for-in loop. Følgende eksempel viser brugen af for-in loop til at læse en række strengdata. Her vil hver array værdi hente i variablen, $ sprog og udskrive en meddelelse baseret på sprog i hver iteration.

#!/bin/bash
languages=(“Bash PERL Python PHP”)
for language in $languages
gør
hvis

echo “$language is a programming language”
Echo “$language is a scripting language”
fi
udført

udgang:

kør scriptet.

$ bash for2.sh

følgende output vises efter kørsel af scriptet.

gå til toppen

brug for loop til at læse en liste over strengværdier med mellemrum

når en liste over en streng læses af for-in loop, og en hvilken som helst strengværdi indeholder mellemrum, opdeles værdierne i ord baseret på mellemrum, hvis strengværdien ikke citeres med et enkelt eller dobbelt citat. Følgende eksempel viser, hvordan en liste over strengværdier med mellemrum kan læses af for-in loop. Her indeholder en værdi af listen plads, og den udskrives med pladsen i output.

#!/bin / bash
#for-in loop for at læse listen over strenge med plads
for os i “Ubuntu” “Linuks Mint” “Fedora””CentOS”
gør
#Udskriv hver streng
ekko “operativsystem – $os”
udført

Output:

Kør scriptet.

$ bash for3.sh

her udskrives strengværdien, ‘Linuks Mint’ korrekt.

gå til toppen

brug for loop in {START..ENDE..INCREMENT} range

en anden anvendelse af for-in loop er at læse range array. I det følgende eksempel bruges en for loop til at læse en række data fra 10 til 30, som øges med 5 i hvert trin. Derefter udskriver scriptet de tal i området, der kan deles med 10.

#!/bin / bash
# læs et interval ved hjælp af For loop
for num i {10..30..5}
gør
# Kontroller, at nummeret kan deles med 10 eller ikke
hvis (($num%10==0 ))

echo”$num kan deles med 10 ”
fi
udført

udgang:

Kør scriptet.

$ bash for4.sh

følgende output vises efter kørsel af scriptet.

gå til toppen

brug for loop in {START..ENDE..INCREMENT} interval går baglæns

dataområdet kan læses bagud ved hjælp af for-in loop, hvor startværdien af området er større end slutværdien af området. I det følgende eksempel starter området fra 50 og slutter til 30. Værdien af $num vil blive reduceret med 10 i hvert trin i sløjfen. Scriptet udskriver disse tal fra området, der kan deles med 5 og 10.

#!/bin / bash
echo”følgende tal kan deles med 5 og 10″
# læs et interval ved hjælp af loop
for num i {50..30..10}
gør
# Kontroller, at nummeret kan deles med 5 og 10 eller ikke
hvis (($num%5==0 && $num%10==0 ))
derefter
echo-n “$num ”
fi
udført
echo “udført”

udgang:

Kør scriptet.

$ bash for5.sh

følgende output vises efter kørsel af scriptet.

gå til toppen

brug for loop med 3 dele og tilstandstæller

Bash understøtter loop med tre dele som andre standard programmeringssprog. Den første del indeholder initialisering, den anden del indeholder opsigelsesbetingelsen, og den tredje del indeholder forøgelse eller formindskelse. Denne sløjfe bruges hovedsageligt, når antallet af iteration tidligere er defineret. I det følgende eksempel, for loop vil gentage for 50 gange og beregne summen af 1 til 50. Resultatet af summeringen udskrives som output.

#!/bin / bash
# Initialiser variablen
sum=0
# Loop vil gentage i 50 gange
for (( n=1; n<=50; n++ ))
gør
# Tilføj sumværdien med den næste værdi af n
((sum=$sum+$n))
udført
# Udskriv resultatet
Echo “summen af 1 Til 50 er $sum”

udgang:

Kør scriptet.

$ bash for6.sh

summen af 1 til 50 er vist i output.

gå til toppen

brug af for loop med 3 dele og flere betingelser og handlinger med komma

for loop med tre dele kan defineres med flere initialiseringer, termineringsbetingelser og handlinger. Følgende eksempel viser brugen af denne type loop. Her initialiseres $Y og $ y med 5 og 25. Sløjfen fortsætter, indtil værdien af $er mindre end eller lig med 20, og værdien af $y er større end 5. Værdien af $vil stige med 5, og værdien af $ y vil falde med 5 i hver iteration af sløjfen. Den aktuelle værdi på $ og $ y i hvert trin udskrives som output.

#!/bin / bash
# Loop vil gentage baseret på to betingelser
for ((H=5, y=25; H<=20 && y>5; H+=5,y-=5 ))
do
echo “den aktuelle værdi af H=$H og y=$y”
udført

Output:

Kør scriptet.

$ bash for7.sh

følgende output vises efter kørsel af scriptet.

gå til toppen

brug uendelig til loop

når en sløjfe er defineret uden nogen termineringstilstand, fungerer sløjfen som en uendelig sløjfe. Følgende eksempel viser brugen af infinite for loop, der ikke indeholder nogen initialiserings -, afslutnings-og handlingsdele. Denne type For loop er defineret af dobbelt semikolon (;;). Følgende script fortsætter sløjfen, indtil brugeren skriver ‘Afslut’ som input. Scriptet vil udskrive et tal fra 1 til 20, Der vil tage som input ellers vil udskrive “nummeret er uden for rækkevidde”

#!/ bin / bash
# erklære uendelig løkke
til (( ; ; ))
gør
# tag en indgang
echo “indtast et tal mellem 1 og 20”
Læs n
# Indstil termineringsbetingelsen for sløjfen
hvis
derefter
echo “program afsluttet”
Afslut 0
fi
# kontroller nummerområdet
hvis (( $n < 1 || $n > 20 ))
derefter
Echo “nummeret er uden for rækkevidde”
else
Echo “nummeret er $n”
Fi
udført

udgang:

kør scriptet.

$ bash for8.sh

her tages 6 som første indgang, der er et gyldigt nummer, 22 tages som anden indgang, der er et ugyldigt nummer, og afslut tages som tredje indgang, der afsluttede scriptet.

gå til toppen

brug for loop med betinget pause og fortsæt

‘fortsæt’ erklæring bruges til at udelade en eller flere dele af sløjfen baseret på en hvilken som helst tilstand, og ‘break’ erklæring bruges til at afslutte sløjfen baseret på en hvilken som helst tilstand. Følgende eksempel viser anvendelserne af disse udsagn i en for loop. Her bruges sløjfen til at læse en liste over strengdata, og hver værdi på listen gemmes i variablen $food. Når værdien af $mad er ‘suppe’, fortsætter den sløjfen uden at udskrive værdien. Når værdien af $mad er ‘Pasta’, vil den afslutte sløjfen. Når $food indeholder en anden værdi end’ suppe ‘og’ Pasta’, vil den udskrive værdien. Så scriptet udskriver to værdier fra listen som output.

#!/bin/bash
# erklære en løkke med en liste
til mad i suppe Burger Pasta Nudler
gør
# sæt betingelse for fortsæt
hvis
derefter
fortsæt
# sæt betingelse for pause
elif
derefter
break
else
echo “$food is my favorite”
fi
udført

udgang:

kør scriptet.

$ bash for9.sh

her udelades to værdier fra listen. ‘Suppe’ udskrives ikke til fortsættelseserklæringen, og ‘Pasta’ udskrives ikke til pauseerklæringen.

gå til toppen

brug af loop til at læse filnavne ved at globbing

filnavne eller det særlige indhold i en fil kan søges ved hjælp af globbing. Det bruger forskellige typer jokertegn til at matche ethvert filnavn eller søge indhold i filen. Alle filer med tekstudvidelse af den aktuelle placering søges udskrevet af følgende eksempel. Når du kører scriptet, udskrives alle matchende filnavne uden ny linje som output.

#!/bin / bash
# Loop vil søge i alle tekstfiler og gemme hvert filnavn i $file
for fil i “*.tekst”;
gør
# Udskriv filnavnet
echo $file;
udført

udgang:

Kør scriptet.

$ bash for110.sh

gå til toppen

brug af loop til at læse output fra find-kommando

‘find’ – kommando bruges til forskellige formål i bash. I det følgende eksempel bruges kommandoen ‘find’ til at læse alle tekstfilnavne fra den aktuelle placering. Her,’ – navn ‘ mulighed for at bruge til store og små bogstaver søgning. Så scriptet udskriver de filnavne på den aktuelle placering, der har ‘.udvidelse med ethvert navn. Her bruges IFS-variabel til at definere den nye linje som feltseparator og udskrive værdien af $file i hver linje.

#!/ bin / bash
# Set field separator
IFS=$’\n’;
# Læs filerne i en mappe
for fil i $(find-navn “*.tekst”); gøre
echo $ file
udført
#uunset feltseparator
unset IFS;

udgang:

Kør scriptet.

$ bash for 11.sh

følgende output vises efter kørsel af scriptet.

gå til toppen

brug af loop til at læse filnavne i en mappe rekursivt

‘find’ kommando kan bruges til at læse alle filer og undermapper i en bestemt mappe. Følgende eksempel viser brugen af’ find ‘kommando til at læse alle filnavne og mapper under’ mydir ‘ mappe. Her bruges IFS variabel til at udskrive værdien af $filnavn med ‘ny linje’ som det foregående eksempel.

#!/ bin / bash
# sæt felt separator
IFS=$’\n’;
# Læs filerne i en mappe
for filnavn i $(find “mydir”)
gør
ekko “$filnavn ”
udført
# frakoblet feltseparator
fjern indstilling af IFS;

udgang:

Kør scriptet.

$ bash for12.sh

følgende output vises efter kørsel af scriptet.

gå til toppen

brug af for loop til at læse filnavne i en mappe rekursivt med betingelsen

‘for’ loop med ‘find’ kommando kan bruges til at udskrive som+

e bestemte filnavne i en mappe baseret på enhver betingelse. kommandoen ‘find’ bruges med en betingelse i følgende eksempel. Det søger kun tekstfilnavne på mydir-biblioteket. Her,’ – iname ‘mulighed bruges med ‘find’ kommando til case ufølsom søgning. Det betyder, at alle filer med udvidelsen ‘tekst ‘ eller’ tekst ‘ vil blive matchet og udskrevet som output. Her bruges IFS variabel til at udskrive værdien af $filnavn med ‘ny linje’ som det foregående eksempel.

#!/ bin / bash
# Set field separator
IFS=$’\n’;
# Læs alle tekstfiler i en mappe
for filnavn i $(find mydir-iname ‘*.Echo”$filnavn ”
udført
# Unset field separator
unset IFS;

Output:

Kør følgende kommando for at vise listen over filer og mapper i mydir-mappen.

$ ls mydir

Kør scriptet.

$ bash for 13.sh

der er tre tekstfiler i mappen, der vises i output.

gå til toppen

kørsel af sløjfen, indtil filen findes

ethvert filnavn findes eller ej, kontrolleres i følgende eksempel ved hjælp af infinite for loop. I dette script vil et filnavn tage som input i hver iteration af sløjfen og teste filnavnet findes i den aktuelle placering eller ej. Hvis filnavnet eksisterer, vil scriptet udskrive” fil eksisterer ” og fortsætte sløjfen ellers vil det afslutte sløjfen ved at udskrive meddelelsen, ‘fil eksisterer ikke’.

#!/bin / bash
# Define infinite loop
for(( ; ; ))
do
# Input a filename
echo “indtast et filnavn”
Læs fil
# kontroller filen findes eller ej
hvis

echo “filnavn findes ikke”
Afslut 0
else
Echo “fil eksisterer”
fi
udført

udgang:

Kør scriptet.

$ bash loop14.sh

et eksisterende filnavn gives som første input, og et ikke-eksisterende filnavn gives som andet output, der afsluttede scriptet.

gå til toppen

brug af For loop baseret på output fra pakkeliste kommando

oplysningerne om de installerede pakker i systemet kan hentes ved kommandoen `apt list – -installeret`. ‘for’ loop bruges i følgende eksempel til at læse de installerede pakkeoplysninger fra kommandoen pakkeliste og udskrive hver pakkeoplysninger i hver linje. IFS-variabel bruges her til at udskrive værdien af $line med ‘ny linje’ som det foregående eksempel.

# sæt felt separator
IFS=$’\n’;
# Læs fil linje for linje
for linje i $(apt list –install)
gør
echo “$line ”
udført
# Unset field separator
unset IFS;

udgang:

Kør scriptet.

$ bash for15.sh

udgangen viser listen over installerede pakker.

gå til toppen

brug for loop til at læse linjer i en fil

der er mange måder at læse en fil i bash. ‘cat’ kommando bruges i følgende eksempel til at læse filen, temp.TST. Hver linje i filen gemmes i variablen, $line og udskriver linjen i hver iteration af For loop. IFS-variabel bruges her til at udskrive værdien af $line med ‘ny linje’ som det foregående eksempel.

#!/ bin / bash
# sæt felt separator
IFS=$’\n’;
# Læs fil linje for linje
for linje i $(kat temp.Echo “$ line ”
udført
# Unset field separator
unset IFS;

udgang:

Kør scriptet.

$ bash for 16.sh

gå til toppen

brug for loop til at læse linjer i en fil med betinget match

hvis du kun vil udskrive bestemte linjer fra en fil, skal du tilføje inde i sløjfen, der bruges til at læse filen. Følgende eksempel udskriver det formaterede output for hver linje i ‘ ugedag.fil baseret på en betingelse. Hvis nogen linje i filen indeholder værdien, ‘ søndag ‘så vil det udskrive’ ferie ‘besked ellers vil udskrive’ arbejdsdag ‘ besked.

# Læs filen
for linje i $(kat ugedag.8722>do
#Sammenlign værdien med en strengdata
hvis

echo”$line er en ferie “
else
echo”$line er en arbejdsdag ”
fi
udført

Output:

Kør scriptet.

$ bash for17.sh

følgende output vises efter kørsel af scriptet.

gå til toppen

brug Mens loop med en tæller

$counter variabel bruges enhver loop til at styre iterationen af sløjfen. Følgende eksempel viser brugen af Mens loop med tælleren. Her initialiseres $counter til 1, og Mens loop vil gentage 5 gange og udskrive værdien af $counter i hver iteration. $counter øges med 1 i hvert trin for at nå opsigelsesbetingelsen for sløjfen.

#!/ bin / bash
# Initialiser tæller
tæller=1
# gentag sløjfen i 5 gange
mens
gør
echo “Counter value = $counter”
((counter++))
udført

Output:

Kør scriptet.

$ bash loop18.sh

gå til toppen

brug Mens loop med brugerinput og Afslut, når du vælger Afslut fra menuen

‘Mens’ loop bruges i følgende eksempel til at vise en menu med 5 indstillinger. De første fire indstillinger bruges til at udføre fire aritmetiske operationer baseret på brugerens input, og den sidste mulighed bruges til at afslutte fra scriptet. Menuen vises efter at have angivet to tal som input. Hvis brugeren vælger ‘1’, tilføjes inputnumrene. Hvis brugeren vælger ‘2’, trækkes det andet inputnummer fra det første inputnummer. Hvis brugeren vælger ‘3’, multipliceres inputnumrene, og hvis brugeren vælger’ 4′, divideres det første inputnummer med det andet inputnummer.

#!/bin / bash
# tag to tal
echo “indtast et tal”
Læs n1
echo”indtast et tal “
Læs n2
# erklære en uendelig løkke
mens sandt
gør
# Vis menuen
echo ” 1. Tilføjelse “
echo ” 2. Subtraktion “
ekko ” 3. Multiplikation “
ekko ” 4. Afsnit “
echo ” 5. Afslut “
echo-n ” Vælg et hvilket som helst nummer fra :”
Læs input
# udfør operationen baseret på den valgte værdi
if ]
derefter
((resultat=n1+n2))
elif ]
derefter
((resultat=n1-n2))
elif ]
derefter
((resultat=$n1*$n2))
Elif ]
derefter
((resultat=$N1/$N2))
Elif ]
derefter
Afslut 0
ellers
ekko “ugyldig indgang”
Fi
ekko “resultatet er $resultat”
udført

udgang:

kør scriptet.

$ bash loop19.sh

følgende output vises efter valgmulighed 2 og 5.

gå til toppen

kombination mens sløjfer med getopts

‘getopts’ er en indbygget funktion af bash, der bruges til at læse argumenter og indstillinger i bash-scriptet. Følgende eksempel viser brugen af getopts funktion, der bruges i et stykke tid loop. Her bruges tre indstillingsværdier med getopts. Disse er ‘a’, ‘r’og ‘ c’. Tre forskellige meddelelser udskrives til disse indstillinger.

#!/ bin / bash
# Læs indstillingen og gem i en variabel
mens getopts” arc ” mulighed; gør
# kontroller indstillingsværdien
case ${option} i
a) # option a
echo “processen afbrydes”
;;
r) # option r
echo “processen genstartes”
;;
c) # option c
echo “processen fortsætter”
;;
\? ) # ugyldig mulighed
echo “brug: eller eller”
;;
esac
udført

udgang:

Kør scriptet med gyldige indstillinger.

$ bash loop20.sh -arc

Kør scriptet med en ugyldig indstilling.

$ bash loop20.sh – h

gå til toppen

brug indtil loop med en tæller

indtil loop kan bruges med en tæller som Mens loop, der vises før. Følgende eksempel viser brugen af indtil loop med en tæller. Her bruges $ counter variabel til at styre iterationen af sløjfen, der initialiseres til 1. Den indtil loop vil fortsætte, indtil værdien af $tæller til 5. Så vil sløjfen gentage for 6 gange og udskrive værdien $tæller i hvert trin. $counter vil blive reduceret med 1 i hvert trin for at nå opsigelsesbetingelsen for sløjfen.

#!/ bin / bash
# Initialiser tælleren
counter=10
# gentag sløjfen for 6 gange
indtil
gør
echo “den aktuelle værdi af counter = $counter”
((counter -))
udført

Output:

Kør scriptet .

$ bash loop21.sh

gå til toppen

Afslut indtil loop baseret på brugerinput

enhver loop afsluttes baseret på en bestemt tilstand. Hvordan indtil loop kan afsluttes baseret på brugerinput, vises i følgende eksempel. I henhold til opsigelsesbetingelsen ophører sløjfen, når værdien af $nummer er større end 50. Værdien af $nummer øges ikke inde i løkken. Så., sløjfen fortsætter med at tage input fra brugeren, indtil et antal på mere end 50 tages som input.

#!/ bin / bash
# Initialiser nummer
nummer=0
# Indstil mønsteret for numeriske data
mønster=’^+$’
# Indstil termineringsbetingelsen
indtil
gør
echo-n “indtast et nummer:”
Læs nummer
# Kontroller, at inputværdien er nummer eller ej
hvis ! ]
derefter
echo ” fejl: Ikke et tal ”
nummer=0
else
echo “du har indtastet $nummer”
fi
udført

udgang:

Kør scriptet.

$ bash loop22.sh

scriptet gentager sløjfen igen for inputværdien 4, viser fejlmeddelelsen for inputværdien, gg og afslutter sløjfen for inputværdien 54.

gå til toppen

brug indlejret mens sløjfer

når en sløjfe erklæres inde i en anden sløjfe, kaldes den en uendelig sløjfe. Følgende eksempel viser brugen af indlejret Mens loop. Her vil den første Mens loop gentage for 2 gange og den anden Mens loop inde i den første loop vil gentage for tre gange. Den samlede iteration af sløjferne er 2 liter 3=6 gange. $i og $ j variabler bruges til at kontrollere iterationen af disse sløjfer, og værdierne for disse variabler i hvert trin udskrives som output.

#!/bin/bash
# Initialiser i og j
i=1
j=1
# Indstil termineringsbetingelse for i
mens
gør
# Indstil termineringsbetingelse for j
mens
gør
# Udskriv den aktuelle værdi af i og j
printf “i=%d, j=%d\n” $i $j
((j++))
udført
j=1
((i++))
udført

udgang:

kør scriptet.

$ bash loop23.sh

gå til toppen

brug indtil loop til at sove/vente på baggrund opgave startet i script

enhver proces kan køres i baggrunden ved hjælp af ‘& ‘ symbol. Hvordan en proces kan køres i baggrunden ved hjælp af indtil loop og afslutte sløjfen baseret på den tid, der er angivet i sleep-kommandoen, vises i dette eksempel. Her bruges $ cnt-variablen til at afslutte sløjfen. Sløjfen starter baggrundsprocessen og skriver output i en tekstfil med navnet “output.tekst ” i 1 sekund. Derefter vil opsigelsesbetingelsen for sløjfen kontrollere, og den vil returnere falsk. Derefter udskriver scriptet en besked,” Sleeping… ” og afslutter scriptet efter 3 sekunder.

#!/bin / bash
# Initialiser tæller
cnt=1
# Indstil termineringstilstand
indtil
do
echo “baggrundsproces kører”;
# vent i 1 sekund
sleep 1;
((cnt++))
udført > output.tekst &
# vent i 3 sekunder
echo “Sovende…”
søvn 3

udgang:

Kør scriptet.

$ bash loop24.sh

kontroller udgangen af scriptet.

$ cat output.TST

gå til toppen

brug Mens loop til at læse pid fra ps output, der ikke afsluttes

‘ps’ kommando bruges til at få oplysninger om alle kørende processer i systemet. Det giver detaljerede oplysninger om enhver kørende proces som bruger-id, PID, cpu-brug, hukommelsesforbrug osv. Følgende eksempel viser, hvordan et stykke tid loop kan bruges til at læse de kørende procesoplysninger relateret til ‘apache’. Her bruges IFS-variabel til at udskrive PID for hver proces med en ny linje. Derefter venter det på, at brugeren trykker på en vilkårlig tast for at afslutte scriptet.

#!/bin / bash
# Set field separator
IFS= ”
mens
gør
# Hent alle kørende proces-id for apache
pid=`ps-ef | grep “apache” | AK ‘{print $2 ” processen kører …”} “
echo $pid
# vent i 1 sekund
sleep 1
# tryk på en vilkårlig tast for at afslutte sløjfen
echo “tryk på en vilkårlig tast for at afslutte”
hvis read-r-n 1 ; derefter
break
fi
udført
# Unset field separator
unset IFS

udgang:

kør scriptet.

$ bash loop25.sh

PID for al kørende proces baseret på ‘apache’ vises i output.

gå til toppen

Søg efter en streng i en fil ved hjælp af loop og afslut

Opret en fil med navnet måned.tekst med følgende indhold for at teste bash-scriptet nedenfor.

måned.tekst

January
February
March
April
May
June
July
August
September
October
November
December

‘Mens’ loop bruges i det følgende eksempel til at læse måned.tekst fil linje for linje. Hvis en linje indeholder værdien, ‘juni’, vil den udskrive “Nyd sommerferie” og afslutte fra scriptet, ellers vil det udskrive værdien af $line.

#!/bin / bash
# Indstil filnavnet til at læse
filnavn=”måned.”
# Læs fil linje for linje
mens IFS= read-r linje
gør
# kontroller værdien af linjen er lig med Juni
# afslut programmet, hvis betingelsen er sand
hvis ];
derefter
echo “Nyd sommerferie”
Afslut 0
else
echo $line
fi
udført < $filnavn

udgang:

Kør scriptet.

$ bash loop26.sh

her findes ‘Juni’ i filmåneden.tekst, der afslutter sløjfen. Så andre månedsnavne efter’ juni ‘ læses ikke af løkken.

gå til toppen

Kombiner bash med curl for at evaluere data fra URL

Data kan overføres til eller fra enhver netværksserver i bash ved hjælp af ‘curl’ kommando med enhver understøttet protokol som HTTP, FTP, TELNET osv. Det er et kommandolinjeværktøj. Hvordan’ curl ‘ kommando kan bruges til at evaluere data fra URL ved hjælp af loop vises i følgende eksempel. Her for loop vil læse en liste over url og videregive hver URL-værdi i curl og udskrive de data, der er modtaget fra URL ‘ en.

#!/ bin / bash
# Læs hver URL fra listen
for url i “yahoo.com” “youtube.com”
gør
# Udskriv HTTP-svarkode for hver URL
echo $ url; curl-v-m 5-s $1 “$url” | grep HTTP/1.1;
udført

udgang:

Kør scriptet.

$ bash loop27.sh

gå til toppen

læsning af data fra en port, der sendes af netcat ved hjælp af Mens loop

‘netcat’ kommando bruges til at læse og skrive data over netværket ved hjælp af tcp eller UDP-protokol. ‘NC’ kommando bruges i bash til at køre ‘netcat’ kommando. Følgende eksempel viser brugen af ‘ NC ‘ kommando i Mens loop. Her vil scriptet forsøge at oprette forbindelse til porten 1234 ved hjælp af NC-kommandoen, og det udskriver en meddelelse i den anden terminal, hvis den kan oprette forbindelse. Du skal åbne et andet terminalvindue eller en fane for at køre kommandoen ‘NC localhost 1234’ for at oprette forbindelse. Efter oprettelse af forbindelsen kan enhver meddelelse overføres fra en terminal til en anden terminal.

#!/bin / bash
echo ” lytter på port 1234 …”
# Læs meddelelsen sendt af netcat i port 1234
mens du læser tekst
gør
# Afslut sløjfen, hvis den modtagne besked er”afslut “
hvis ; derefter
echo”Bye “
break
else
echo”$tekst “
fi
# Udskriv besked, når porten er tilsluttet
udført < <((printf ” velkommen.\r \ nType nogle besked: “| / nc-l 1234)

Output:

Kør scriptet i en terminal for at starte lytningen i porten 1234.

$ bash loop28.sh

åbn derefter en anden terminal og kør følgende kommando for at kommunikere med

den første terminal.

$ nc localhost 1234

det viser en velkomstmeddelelse i den anden terminal. Hvis brugeren skriver noget i den anden terminal, vises det i den første terminal. Når brugeren skriver ‘Afslut’ i den anden terminal, afsluttes scriptet ved at vise en besked, ‘farvel’ i den første terminal.

gå til toppen

ping URL ved hjælp af en loop

du kan finde ud af, at enhver hjemmeside er live eller ej ved at udføre ‘ping’ kommando med URL ‘ en på siden. ‘ping’ kommando bruges med ‘google.com’ i det følgende eksempel for at kontrollere, at internetforbindelsen fungerer eller ej. Mens loop vil gentage 5 gange i scriptet og forsøge at pinge google.com. Hvis serveren reagerer, udskriver den” internettet fungerer ” og afslutter sløjfen. Hvis sløjfen gentager 5 gange og ikke får noget serverrespons, vil det udskrive “Ingen internetforbindelse”.

#!/ bin / bash
# sæt tælleren
count=5
mens ]
gør
# prøv at pinge google.com
ping-C 1 google.com
c=$?
# kontroller statuskoden
hvis]
derefter
echo “internettet fungerer”
Afslut 0
fi
# Decrement tælleren
((count–))
udført
echo “Ingen internetforbindelse”

Output:

Kør scriptet.

$ bash loop29.sh

du får en lignende output, hvis din internetforbindelse fungerer korrekt.

gå til Top

Running top i batch-tilstand ved hjælp af en loop og record output

‘top’ kommando er et administrativt værktøj, der bruges til at undersøge brugen af systemressourcer, styre forskellige opgaver og overvåge kørende processer. Hvordan du kan køre ‘ top ‘ kommando i batch-tilstand ved hjælp af loop og gemme posterne i en tekstfil vises i følgende eksempel. Her bruges-B-indstillingen til at starte kommandoen ‘top’ i batch-tilstand, og-p-indstillingen bruges til at indstille det proces-id, du vil overvåge. Udgangen af kommandoen ‘ top ‘ gemmes i output.tekstfil.

#!/bin / bash
# Loop vil gentage i 5 gange og udføre øverste kommando
for ((i=0; i<5; i++))
gør
top-b-p 2875-n1 | tail -1 >> output.tekst
udført

Output:

Kør først følgende kommando for at finde listen over de kørende processer.

$ ps

Kør nu scriptet.

$ bash loop30.sh

Kør følgende kommando for at se scriptudgangen.

$ cat output.TST

gå til toppen

konklusion

Loops kan bruges i bash på forskellige måder til at udføre forskellige typer enkle eller komplekse opgaver. Hvordan tre typer sløjfer kan bruges i bash til forskellige opgaver som hentning af liste eller array, læsning af filer eller enhver kommandoudgang osv. vises i denne artikel ved hjælp af meget enkle eksempler. Jeg håber, at disse eksempler vil hjælpe læseren til at forstå brugen af bash loop mere tydeligt.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

More: