30 Bash loop exempel

tre typer av slingor används i bash för olika ändamål. Dessa är för, Medan och tills slingor. De olika användningarna av dessa slingor förklaras genom att använda 30 olika exempel i den här artikeln.

användning av Bash-slingor:

  1. använda för loop för att läsa objekt i en lista
  2. använda för loop för att läsa en array
  3. använda för loop för att läsa en lista med strängvärden med mellanslag
  4. använda för loop i {START..SLUT..Inkrement} intervall
  5. använder för loop i {START..SLUT..Steg} intervall går bakåt
  6. använda för loop med 3 delar och villkor counter
  7. använda för loop med 3 delar och flera villkor och åtgärder med kommatecken
  8. använda oändlig för loop
  9. använda för loop med villkorlig paus och fortsätta
  10. använda för loop för att läsa filnamn genom globbing
  11. använda för loop för att läsa utdata från sökkommandot
  12. använda för loop för att läsa filnamn i en katalog rekursivt
  13. använda för loop för att läsa filnamn i en katalog rekursivt med villkor
  14. köra slingan tills filen finns
  15. använda för loop baserat på utmatningen från paketlistan kommandot
  16. använda för loop för att läsa varje rad i en fil
  17. använda för loop för att läsa varje rad i en fil baserat på en villkorlig matchning
  18. använda while loop med en räknare
  19. använda while loop med användarinmatning och avsluta när du väljer Avsluta från en meny
  20. kombinera medan loopar med getopts
  21. använda tills loop med en räknare
  22. avsluta tills loop baserat på användarinmatning
  23. använda kapslade medan loopar
  24. använda tills loop för att sova/vänta på bakgrundsuppgift började i script
  25. använda while loop för att läsa pid från ps-utdata som inte avslutas
  26. söka någon sträng i en fil med loop och avsluta
  27. kombinera bash med curl för att utvärdera data från URL
  28. läsa data från en port skicka med netcat använda while loop
  29. ping URL med loop
  30. Running top i batch-läge med en loop och spela in utdata

använda för loop för att läsa objekt i en lista

den enklaste användningen av ’för’ loop är att läsa en lista med sträng eller numeriska data. Listan med numeriska data itereras med hjälp av for-in loop i följande exempel. Här läses fyra siffror i variabeln, $n i varje steg i slingan och skrivs ut. Skapa en bash-fil med följande skript och kör från terminalen.

#!/ bin / bash
# for-in loop för att läsa en lista med siffror
för n i 10 11 17 25
gör
# Skriv ut varje nummer
echo ”numret är $n”
gjort

utgång:

kör skriptet.

$ bash for1.sh

följande utdata visas efter att ha kört skriptet.

gå till toppen

använda för loop för att läsa en array

varje array variabel innehåller en lista med data som kan itereras mycket enkelt med hjälp av for-in loop. Följande exempel visar användningen av for-in loop för att läsa en rad strängdata. Här hämtar varje arrayvärde i variabeln $language och skriver ut ett meddelande baserat på språk i varje iteration.

#!/bin/bash
languages=(”Bash Perl Python PHP”)
för språk i $språk
gör
om

echo ”$language är ett webbprogrammeringsspråk”
annars
echo ”$language är ett skriptspråk”
fi
gjort

utgång:

kör skriptet.

$ bash for2.sh

följande utdata visas efter att ha kört skriptet.

gå till toppen

använda för loop för att läsa en lista med strängvärden med mellanslag

när en lista med en sträng läses av for-in loop och något strängvärde innehåller mellanslag delas värdena upp i ord baserat på Mellanslag om strängvärdet inte citeras med en enkel eller dubbel citat. Följande exempel visar hur en lista med strängvärden med mellanslag kan läsas av for-in loop. Här innehåller ett värde i listan utrymme och det skrivs ut med utrymmet i utmatningen.

#!/ bin / bash
#for-in loop för att läsa lista över strängar med utrymme
för os i ”Ubuntu” ”Linux Mint” ”Fedora””CentOS”
gör
#Skriv ut varje sträng
echo ”operativsystem – $os”
gjort

utgång:

kör skriptet.

$ bash for3.sh

här skrivs strängvärdet, ’Linux Mint’ korrekt.

gå till toppen

använder för loop i {START..SLUT..INCREMENT} range

en annan användning av for-in loop är att läsa range array. I följande exempel används en for-loop för att läsa ett dataintervall från 10 till 30 som ökas med 5 i varje steg. Därefter kommer skriptet att skriva ut de siffrorna i intervallet som är delbara med 10.

#!/ bin / bash
# Läs ett intervall med för loop
för num i {10..30..5}
gör
# kontrollera att numret är delbart med 10 eller inte
om (($num%10==0 ))
sedan
echo ”$num är delbart med 10 ”
fi
gjort

utgång:

kör skriptet.

$ bash for4.sh

följande utdata visas efter att ha kört skriptet.

gå till toppen

använder för loop i {START..SLUT..Steg} intervall går bakåt

dataområdet kan läsas bakåt med hjälp av in-loop där startvärdet för intervallet är större än intervallets slutvärde. I följande exempel börjar intervallet från 50 och slutar till 30. Värdet på $num kommer att minskas med 10 i varje steg i slingan. Skriptet kommer att skriva ut de siffrorna från intervallet som är delbara med 5 och 10.

#!/bin / bash
echo”följande siffror är delbara med 5 och 10″
# Läs ett intervall med för loop
för num i {50..30..10}
gör
# kontrollera att numret är delbart med 5 och 10 eller inte
om (($num%5==0 && $num%10==0 ))
sedan
echo – n ”$num ”
fi
gjort
echo ”gjort”

utgång:

kör skriptet.

$ bash for5.sh

följande utdata visas efter att ha kört skriptet.

gå till toppen

använda för loop med 3 delar och skickräknare

Bash stöder för loop med tre delar som andra standardprogrammeringsspråk. Den första delen innehåller initialisering, den andra delen innehåller uppsägningsvillkoret och den tredje delen innehåller inkrement-eller minskningsoperation. Denna slinga används huvudsakligen när antalet iterationer tidigare definierats. I följande exempel, för loop kommer att iterera för 50 gånger och beräkna summan av 1 till 50. Resultatet av summeringen skrivs ut som utmatning.

#!/bin / bash
# initiera variabeln
summa=0
# Loop kommer att iterera för 50 gånger
för (( n=1; n<=50; n++ ))
gör
# Lägg till summan värdet med nästa värde av n
((summa=$summa+$n))
gjort
# Skriv ut resultatet
Echo ”summan av 1 till 50 är $summa”

utgång:

kör skriptet.

$ bash for6.sh

summan av 1 till 50 visas i utgången.

gå till toppen

använda för loop med 3 delar och flera villkor och åtgärder med kommatecken

för loop med tre delar kan definieras med flera initialiseringar, termineringsvillkor och åtgärder. Följande exempel visar användningen av denna typ av slinga. Här initieras $x och $ y variabler med 5 och 25. Slingan fortsätter tills värdet på $x är mindre än eller lika med 20 och värdet på $y är större än 5. Värdet på $x kommer att öka med 5 och värdet på $y kommer att minska med 5 i varje iteration av slingan. Det aktuella värdet på $x och $y i varje steg skrivs ut som utdata.

#!/ bin / bash
# Loop kommer att iterera baserat på två villkor
för ((x = 5, y = 25; x<=20 && y>5; x + = 5, y-=5 ))
gör
echo ”det aktuella värdet på x=$x och y=$y”
gjort

utgång:

kör skriptet.

$ bash for7.sh

följande utdata visas efter att ha kört skriptet.

gå till toppen

använda oändlig för slinga

när någon slinga definieras utan något termineringsvillkor fungerar slingan som en oändlig slinga. Följande exempel visar användningen av infinite for loop som inte innehåller några initialiserings -, avslutnings-och åtgärdsdelar. Denna typ av för loop definieras av dubbel semikolon (; ;). Följande skript fortsätter slingan tills användaren skriver ’avsluta’ som inmatning. Skriptet kommer att skriva ut valfritt antal från 1 till 20 som kommer att ta som inmatning annars kommer det att skriva ut ”numret är utom räckhåll”

#!/ bin / bash
# deklarera oändlig slinga
för (( ; ; ))
gör
# ta en ingång
echo ”ange ett nummer mellan 1 till 20”
läs n
# Ställ in avslutningsförhållandet för slingan
om
sedan
echo ”program avslutat”
avsluta 0
fi
# kontrollera nummerintervallet
om (( $n < 1 || $n > 20 ))
sedan
Echo ”numret är utanför intervallet”
annars
Echo ”numret är $N”
Fi
gjort

utgång:

kör skriptet.

$ bash for8.sh

här tas 6 som första ingång som är ett giltigt nummer, 22 tas som andra ingång som är ett ogiltigt nummer och avsluta tas som tredje ingång som avslutade skriptet.

gå till toppen

Using for loop with conditional break and continue

’continue’ – sats används för att utelämna vissa delar av slingan baserat på något villkor och ’break’ – sats används för att avsluta slingan baserat på något villkor. Följande exempel visar användningen av dessa uttalanden i en For-loop. Här används slingan för att läsa en lista med strängdata och varje värde i listan lagras i variabeln $food. När värdet på $ mat är ’soppa’ kommer det att fortsätta slingan utan att skriva ut värdet. När värdet på $ mat är ’Pasta’ kommer det att avsluta slingan. När $food innehåller något annat värde än’ soppa ’och’ Pasta ’ kommer det att skriva ut värdet. Så kommer skriptet att skriva ut två värden från listan som utdata.

#!/bin / bash
# deklarera en slinga med en lista
för mat i Pizza soppa Burger Pasta nudlar
gör
# Ställ in villkor för Fortsätt
om
sedan
fortsätt
# Ställ in villkor för paus
elif

bryt
annars
echo ”$mat är min favorit”
fi
klar

utgång:

kör skriptet.

$ bash for9.sh

här utelämnas två värden från listan. ’Soppa ’skrivs inte ut för continue statement och’ Pasta ’ skrivs inte ut för break statement.

gå till toppen

använda för loop för att läsa filnamn genom globbing

filnamn eller det särskilda innehållet i en fil kan sökas genom att använda globbing. Den använder olika typer av jokertecken för att matcha alla filnamn eller söka innehåll i filen. Alla filer med txt-förlängning av den aktuella platsen söks ut med följande exempel. När du kommer att köra skriptet då alla matchande filnamn kommer att skrivas ut utan newline som utgång.

#!/ bin / bash
# Loop söker i alla textfiler och lagrar varje filnamn i $file
för fil i ”*.txt”;
gör
# Skriv ut filnamnet
echo $file;
gjort

utgång:

kör skriptet.

$ bash for110.sh

gå till toppen

använda för loop för att läsa utdata från find-kommandot

’find’ – kommandot används för olika ändamål i bash. I följande exempel används kommandot ’Sök’ för att läsa alla textfilnamn från den aktuella platsen. Här,’ – namn ’ alternativ att använda för skiftlägeskänslig sökning. Så, skriptet kommer att skriva ut de filnamn på den aktuella platsen som har’.Txt ’ förlängning med något namn. Här används IFS-variabeln för att definiera den nya raden som fältavgränsare och skriva ut värdet på $ – filen i varje rad.

#!/ bin / bash
# ange fältavskiljare
IFS=$’\n’;
# Läs filerna i en katalog
för fil i $(Sök-namn ”*.Txt”); göra
echo $fil
gjort
#uunset fält separator
unset IFS;

utgång:

kör skriptet.

$ bash for11.sh

följande utdata visas efter att ha kört skriptet.

gå till toppen

använda för loop för att läsa filnamn i en katalog rekursivt

’sök’ kommando kan användas för att läsa alla filer och undermappar i en viss katalog. Följande exempel visar användningen av kommandot Sök för att läsa alla filnamn och kataloger under katalogen mydir. Här används IFS-variabeln för att skriva ut värdet på $filnamn med ’newline’ som föregående exempel.

#!/ bin / bash
# ange fältavskiljare
IFS = $’ \ n’;
# Läs filerna i en katalog
för filnamn i $(hitta ”mydir”)
gör
echo ”$filnamn”
klar
# Unset field separator
unset IFS;

utgång:

kör skriptet.

$ bash for12.sh

följande utdata visas efter att ha kört skriptet.

gå till toppen

använda för loop för att läsa filnamn i en katalog rekursivt med villkoret

’för’ loop med ’Sök’ kommando kan användas för att skriva ut som+

e särskilda filnamn i en katalog baserat på något villkor. kommandot ’ Sök ’ används med ett villkor i följande exempel. Det kommer att söka endast textfilnamn i mydir katalog. Här,’ – iname ’alternativet används med’ Sök ’ kommando för skiftlägeskänslig sökning. Det betyder att alla filer med tillägget ’txt’ eller ’TXT’ matchas och skrivs ut som utdata. Här används IFS-variabeln för att skriva ut värdet på $filnamn med ’newline’ som föregående exempel.

#!/ bin / bash
# ange fältavskiljare
IFS=$’\n’;
# Läs alla textfiler i en katalog
för filnamn i $(hitta mydir-iname ’*.Txt’); göra
echo ”$filnamn ”
gjort
# Unset fält separator
unset IFS;

utgång:

kör följande kommando för att visa listan över filer och mappar i mydir-katalogen.

$ ls mydir

kör skriptet.

$ bash for13.sh

det finns tre textfiler i katalogen som visas i utgången.

gå till toppen

köra slingan tills filen finns

alla filnamn finns eller inte är markerad i följande exempel med hjälp av oändlig för loop. I det här skriptet kommer ett filnamn att ta som inmatning i varje iteration av slingan och testa filnamnet finns på den aktuella platsen eller inte. Om filnamnet finns kommer skriptet att skriva ut ”File exists” och fortsätta slingan annars kommer det att avsluta slingan genom att skriva ut meddelandet ”File does not exist”.

#!/bin / bash
# definiera oändlig slinga
för(( ; ; ))
gör
# mata in ett filnamn
echo ”ange ett filnamn”
läs fil
# kontrollera att filen finns eller inte
om

echo ”filnamn existerar inte”
avsluta 0
annars
Echo ”filen finns”
fi
klar

utgång:

kör skriptet.

$ bash loop14.sh

ett befintligt filnamn ges som första ingång och ett icke-befintligt filnamn ges som andra utgång som avslutade skriptet.

gå till toppen

använda för loop baserat på utdata från paketlista kommando

informationen om de installerade paketen i systemet kan hämtas med kommandot `apt list – -installed`. ’för’ loop används i följande exempel för att läsa den installerade paketinformationen från kommandot paketlista och skriva ut varje paketinformation i varje rad. IFS-variabeln används här för att skriva ut värdet på $line med ’newline’ som föregående exempel.

# ange fältavgränsare
IFS = $’ \ n’;
# Läs fillinje för rad
för rad i $(apt list-installerad)
gör
echo ”$ line ”
klar
# Unset field separator
unset IFS;

utgång:

kör skriptet.

$ bash for15.sh

utgången visar listan över installerade paket.

gå till toppen

använda för loop för att läsa rader i en fil

det finns många sätt att läsa en fil i bash. kommandot ’ cat ’ används i följande exempel för att läsa filen, temp.txt. Varje rad i filen kommer att lagra i variabeln, $ linje och skriva ut raden i varje iteration av för loop. IFS-variabeln används här för att skriva ut värdet på $line med ’newline’ som föregående exempel.

#!/ bin / bash
# ange fältavskiljare
IFS=$’\n’;
# Läs fillinje för rad
för rad i $(cat temp.Txt)
gör
echo ”$ line ”
klar
# Unset fältavskiljare
unset IFS;

utgång:

kör skriptet.

$ bash for16.sh

gå till toppen

använda för slinga för att läsa rader i en fil med villkorlig matchning

om du bara vill skriva ut vissa rader från en fil måste du lägga till i slingan som används för att läsa filen. Följande exempel skriver ut den formaterade utdata för varje rad i ’ weekday.txt-fil baserat på ett villkor. Om någon rad i filen innehåller värdet, ’söndag ’då kommer det att skriva ut’ semester ’meddelande annars kommer det att skriva ut’ arbetsdag ’ meddelande.

# Läs filen
för rad i $(cat weekday.Txt)
gör
#jämför värdet med en strängdata
om

echo ”$line är en semester”
annars
echo ”$line är en arbetsdag”
fi
klar

utgång:

kör skriptet.

$ bash for17.sh

följande utdata visas efter att ha kört skriptet.

gå till toppen

använda medan loop med en räknare

$counter variabel används någon slinga för att styra iteration av slingan. Följande exempel visar användningen av medan loop med räknaren. Här initieras $counter till 1 och medan loop kommer att iterera 5 gånger och skriva ut värdet på $counter i varje iteration. $ counter ökas med 1 i varje steg för att nå avslutningsförhållandet för slingan.

#!/bin / bash
# initiera räknare
räknare=1
# iterera slingan för 5 gånger
medan
gör
echo ”Counter value = $counter”
((counter++))
gjort

utgång:

kör skriptet.

$ bash loop18.sh

gå till toppen

använda while loop med användarinmatning och avsluta när du väljer Avsluta från menyn

’while’ loop används i följande exempel för att visa en meny med 5 alternativ. De fyra första alternativen används för att utföra fyra aritmetiska operationer baserat på användarens inmatning och det sista alternativet används för att avsluta från skriptet. Menyn visas efter att ha angett två nummer som inmatning. Om användaren väljer ’ 1 ’ kommer inmatningsnumren att läggas till. Om användaren väljer ’ 2 ’ subtraheras det andra inmatningsnumret från det första inmatningsnumret. Om användaren väljer ’ 3 ’multipliceras inmatningsnumren och om användaren väljer’ 4 ’ divideras det första inmatningsnumret med det andra inmatningsnumret.

#!/bin / bash
# ta två siffror
echo ”ange ett nummer”
läs n1
echo ”ange ett nummer”
läs n2
# förklara en oändlig slinga
medan Sant
do
# Visa menyn
echo ”1. Tillägg ”
echo ” 2. Subtraktion”
eko ” 3. Multiplikation”
eko ” 4. Division ”
eko ” 5. Avsluta ”
echo-n ” Välj valfritt nummer från :”
läs inmatning
# utför operationen baserat på det valda värdet
om ]
sedan
((resultat=n1+n2))
elif ]
sedan
((resultat=n1-n2))
elif ]
sedan
((resultat=$n1*$n2))
Elif ]
sedan
((resultat=$n1/$n2))
Elif ]
sedan
avsluta 0
annars
Echo ”ogiltig ingång”
Fi
Echo ”resultatet är $resultat”
gjort

utgång:

kör skriptet.

$ bash loop19.sh

följande utdata visas när du har valt alternativ 2 och 5.

gå till toppen

kombinera medan loopar med getopts

’getopts’ är en inbyggd funktion av bash som används för att läsa argument och alternativ i bash-skriptet. Följande exempel visar användningen av getopts funktion som används i en While loop. Här används tre Alternativvärden med getopts. Dessa är ’a’, ’ r ’och’c’. Tre olika meddelanden kommer att skrivas ut för dessa alternativ.

#!/ bin / bash
# Läs alternativet och lagra i en variabel
medan getopts” arc ” alternativ; gör
# kontrollera alternativvärdet
fall ${alternativ} i
a) # Alternativ A
echo ”processen avbryts”
;;
r) # alternativ r
echo ”processen startas om”
;;
c) # alternativ c
echo ”processen fortsätter”
;;
\? ) # ogiltigt alternativ
echo ”Använd: eller eller”
;;
esac
gjort

utgång:

kör skriptet med giltiga alternativ.

$ bash loop20.sh -arc

kör skriptet med ett ogiltigt alternativ.

$ bash loop20.sh-h

gå till toppen

använda tills loop med en räknare

tills loop kan användas med en räknare som medan loop som visas tidigare. Följande exempel visar användningen av tills loop med en räknare. Här används $ counter variabel för att styra iterationen av slingan som initieras till 1. Fram till-slingan fortsätter tills värdet på $ counter till 5. Så kommer slingan att iterera i 6 gånger och skriva ut värdet $counter i varje steg. $ counter kommer att minska med 1 i varje steg för att nå avslutningsförhållandet för slingan.

#!/bin / bash
# Initializ räknaren
counter=10
# iterera slingan för 6 gånger
tills
gör
echo ”det aktuella värdet av counter = $counter”
((counter -))
gjort

utgång:

kör skriptet .

$ bash loop21.sh

gå till toppen

avsluta tills slinga baserat på användarinmatning

någon slinga avslutas baserat på ett visst villkor. Hur tills loop kan avslutas baserat på användarinmatning, visas i följande exempel. Enligt uppsägningsvillkoren avslutas slingan när värdet på $nummer är större än 50. Värdet på $nummer ökas inte inuti slingan. Så., slingan fortsätter att ta input från användaren tills ett antal mer än 50 tas som input.

#!/bin / bash
# initiera nummer
nummer = 0
# Ställ in mönstret för numeriska data
mönster=’^+$’
# Ställ in avslutningsvillkor
tills
gör
echo-n ”ange ett nummer:”
läs nummer
# kontrollera ingångsvärdet är nummer eller inte
om ! ]
sedan
echo ” fel: Inte ett nummer ”
nummer = 0
annars
echo ”du har angett $nummer”
fi
gjort

utgång:

kör skriptet.

$ bash loop22.sh

skriptet kommer att upprepa slingan igen för ingångsvärdet 4, visa felmeddelandet för ingångsvärdet, gg och avsluta slingan för ingångsvärdet 54.

gå till toppen

använda kapslade medan slingor

när en slinga deklareras inuti en annan slinga kallas den en oändlig slinga. Följande exempel visar användningen av kapslade medan loop. Här kommer den första While loop att iterera i 2 gånger och den andra While loop inuti den första slingan kommer att iterera i tre gånger. Den totala iterationen av slingorna är 2 msk 3=6 gånger. $ i-och $ j-variabler används för att styra iterationen av dessa slingor och värdena för dessa variabler i varje steg skrivs ut som utdata.

#!/bin/bash
# initiera i och j
i=1
j=1
# Ställ avslutningsvillkor för i
medan
gör
# Ställ avslutningsvillkor för j
medan
gör
# Skriv ut det aktuella värdet för i och j
printf ”i=%d, j=%d\n” $i $j
((j++))
gjort
j=1
((i++))
gjort

utgång:

kör skriptet.

$ bash loop23.sh

gå till toppen

använda tills loop för att sova / vänta på bakgrundsuppgift startad i script

vilken process som helst kan köras i bakgrunden med symbolen ’&’. Hur en process kan köras i bakgrunden med tills loop och avsluta slingan baserat på den tid som anges i sleep-kommandot visas i det här exemplet. Här används $ cnt-variabeln för att avsluta slingan. Slingan startar bakgrundsprocessen och skriver utmatningen i en textfil med namnet ”output.txt ” i 1 sekund. Därefter kommer slingans avslutningsförhållande att kontrollera och det kommer att returnera falskt. Därefter kommer skriptet att skriva ut ett meddelande,” sova… ” och avsluta från skriptet efter 3 sekunder.

#!/bin / bash
# initiera räknare
cnt=1
# Ställ avslutningsvillkor
tills
gör
echo ”bakgrundsprocessen körs”;
# vänta i 1 sekund
sova 1;
((CNT++))
klar > utgång.txt &
# vänta i 3 sekunder
echo ” sova…”
sömn 3

utgång:

kör skriptet.

$ bash loop24.sh

kontrollera skriptets utdata.

$ katt utgång.txt

gå till toppen

använda medan loop för att läsa pid från ps-utgång som inte avslutas

’ps’ kommando används för att få information om alla processer som körs i systemet. Det ger detaljerad information om alla processer som körs, t.ex. användar-id, PID, cpu-användning, minnesanvändning etc. Följande exempel visar hur en While loop kan användas för att läsa den löpande processinformationen relaterad till ’apache’. Här används IFS-variabeln för att skriva ut PID för varje process med en ny rad. Därefter väntar det på att användaren trycker på valfri tangent för att avsluta skriptet.

#!/bin / bash
# ange fältavskiljare
IFS= ”
medan
gör
# hämta alla körprocess-id för apache
pid=`ps-ef | grep ”apache” | awk ’{print $2 ” processen körs …”}”
echo $pid
# vänta i 1 sekund
sova 1
# tryck på valfri tangent för att avsluta slingan
echo ”tryck på valfri tangent för att avsluta”
om read-r-N 1 ; sedan
break
fi
klar
# Unset field separator
unset IFS

utgång:

kör skriptet.

$ bash loop25.sh

PID för all körprocess baserad på ’apache’ visas i utgången.

gå till toppen

söka någon sträng i en fil med loop och avsluta

skapa en fil med namnet månad.txt med följande innehåll för att testa bash-skriptet nedan.

månad.txt

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

’medan’ loop används i följande exempel för att läsa månad.txt-fil linje för rad. Om någon rad innehåller värdet, ” juni ”kommer det att skriva ut” njut av sommarsemester ” och avsluta från skriptet annars kommer det att skriva ut värdet på $line.

#!/ bin / bash
# Ställ in filnamnet för att läsa
filnamn= ” månad.txt”
# Läs fillinje för rad
medan IFS= read-r line
gör
# kontrollera värdet på linjen är lika med juni
# avsluta programmet om villkoret är sant
om ];
sedan
echo ”Njut av sommarsemester”
avsluta 0
annars
echo $line
fi
gjort < $filnamn

utgång:

kör skriptet.

$ bash loop26.sh

här finns’ Juni ’ i filmånaden.txt som avslutar slingan. Så, andra månadsnamn efter ’juni’ kommer inte att läsas av slingan.

gå till toppen

kombinera bash med curl för att utvärdera data från URL

Data kan överföras till eller från någon nätverksserver i bash med hjälp av ’curl’ kommando med något protokoll som stöds som HTTP, FTP, TELNET, etc. Det är ett kommandoradsverktyg. Hur’ curl ’ – kommandot kan användas för att utvärdera data från URL med for loop visas i följande exempel. Här, för loop kommer att läsa en lista med url och passera varje URL värde i curl och skriva ut data som tas emot från webbadressen.

#!/ bin / bash
# Läs varje URL från listan
för url i ”yahoo.com” ”youtube.com”
gör
# Skriv ut HTTP-svarskod för varje URL
echo $url; curl-v-m 5-s $1 ”$url” | grep HTTP/1.1;
gjort

utgång:

kör skriptet.

$ bash loop27.sh

gå till toppen

läsa data från en port skicka med netcat använder medan loop

’netcat’ kommando används för att läsa och skriva data över nätverket med TCP eller udp-protokollet. kommandot ’ nc ’ används i bash för att köra kommandot ’netcat’. Följande exempel visar användningen av kommandot’ nc ’ i While loop. Här kommer skriptet att försöka ansluta till porten 1234 med NC-kommandot och det kommer att skriva ut ett meddelande i den andra terminalen om den kan ansluta. Du måste öppna ett annat terminalfönster eller flik för att köra kommandot ’nc localhost 1234’ för att skapa en anslutning. Efter upprättandet av anslutningen kan alla meddelanden överföras från en terminal till en annan terminal.

#!/bin / bash
echo ” lyssna på port 1234 …”
# Läs meddelandet som skickas av netcat vid port 1234
medan du läser text
gör
# avsluta slingan om det mottagna meddelandet är ”avsluta”
om ; då
echo ”Bye”
break
annars
echo ”$text”
fi
# Skriv ut meddelande när porten är ansluten
gjort < <((printf ”välkommen.\r \ nskriv ett meddelande:”) / nc-l 1234)

utgång:

kör skriptet i en terminal för att starta lyssningen i porten 1234.

$ bash loop28.sh

öppna sedan en annan terminal och kör följande kommando för att kommunicera med

den första terminalen.

$ nc localhost 1234

det kommer att visa ett välkomstmeddelande i den andra terminalen. Om användaren skriver något i den andra terminalen visas det i den första terminalen. När användaren skriver ’ avsluta ’i den andra terminalen avslutas skriptet genom att visa ett meddelande,’ hejdå ’ i den första terminalen.

gå till toppen

ping-URL med en slinga

du kan ta reda på att en webbplats är live eller inte genom att köra ’ping’ – kommandot med webbadressen till webbplatsen. ’ping’ – kommandot används med ’google.com’ i följande exempel för att kontrollera Internet-anslutningen fungerar eller inte. Medan loop kommer att iterera 5 gånger i skriptet och försöka Pinga google.com. Om servern svarar kommer den att skriva ut” Internet fungerar ” och avsluta slingan. Om slingan itererar 5 gånger och inte får något serversvar kommer det att skriva ut ”Ingen internetanslutning”.

#!/ bin / bash
# Ställ in räknaren
count = 5
medan]
gör
# försök att pinga google.com
ping-c 1 google.com
c=$?
# kontrollera statuskoden
om]
sedan
echo ”Internet fungerar”
avsluta 0
fi
# minska räknaren
((count–))
klar
echo ”Ingen internetanslutning”

utgång:

kör skriptet.

$ bash loop29.sh

du får en liknande utgång om din internetanslutning fungerar korrekt.

gå till toppen

Running top i batch-läge med en loop och spela in utdata

’top’ – kommandot är ett Linux-administrationsverktyg som används för att undersöka användningen av systemresurser, hantera olika uppgifter och övervaka löpande processer. Hur du kan köra kommandot ’ top ’ i batchläge med för loop och lagra posterna i en textfil visas i följande exempel. Här används-B-alternativet för att starta kommandot ’top’ i batchläge och-p-alternativet används för att ställa in process-id som du vill övervaka. Utsignalen från kommandot ’ top ’ kommer att lagras i output.txt-fil.

#!/ bin / bash
# Loop kommer att iterera i 5 gånger och utföra toppkommando
för ((i=0; i<5; i++))
gör
top-b-p 2875-n1 | tail -1 >> utgång.txt
klar

utgång:

kör först följande kommando för att hitta listan över pågående processer.

$ ps

kör nu skriptet.

$ bash loop30.sh

kör följande kommando för att visa skriptutmatningen.

$ katt utgång.txt

gå till toppen

slutsats

Loops kan användas i bash på olika sätt för att göra olika typer av enkla eller komplexa uppgifter. Hur tre typer av slingor kan användas i bash för olika uppgifter som att hämta lista eller array, läsa filer eller någon kommandoutgång etc. visas i den här artikeln med hjälp av mycket enkla exempel. Jag hoppas att dessa exempel hjälper läsaren att förstå användningen av bash-slingan tydligare.

Lämna ett svar

Din e-postadress kommer inte publiceras.

More: