Syntaks:
for sløyfe kan brukes av to måter i bash. En måte er "for-in" og en annen måte er syntaks for C-stil. Begge syntaksene er vist nedenfor.
For variabel i listen
gjøre
Uttalelser
Ferdig
Eller
for ((Expression1; Expression2; Expression3))
gjøre
Uttalelser
Ferdig
Eksempel-1: For at Loop skal lese inputvariabel
Liste over forhåndsdefinerte strenger eller matrise kan leses enkelt ved å bruke 'for' loop som vises i forrige opplæring av for loop. Hvordan innholdet i en inngangsvariabel kan leses ved å bruke 'for' -løyfe vises i dette eksemplet. Lage en fil som heter 'Forloop1.sh'Med følgende skript. En inngangsverdi av en tekst med flere ord vil bli tatt etter å ha kjørt skriptet. Her brukes for loop til å dele opp teksten i ord basert på hvitt rom og skrive ut hvert ord med posisjonen.
Forloop1.sh
#!/bin/bash
ekko "Skriv inn en tekst med flere ord"
Les tekst
i = 1
for ord i $ tekst
gjøre
ekko "ord no- $ i = $ ord"
((i = $ i+1))
Ferdig
Produksjon:
Kjør manuset.
$ Bash Forloop1.sh
Her er det tatt en tekst med 5 ord, så det skrives ut fem utdataer.
Eksempel-2: For sløyfe med en pauseuttalelse
'Break' uttalelse brukes inni 'for' Loop for å avslutte fra løkken. Lage en fil som heter 'Forloop2.sh ' med følgende kode. 'For' sløyfe brukes her til å lese en liste over fire personer. To forhold testes her. Hvis personnavnet er 'Amir ' Og fargen er 'Blå' Da avsluttes sløyfen etter å ha skrevet ut personens navn og farge. Fargeverdiene til sekundet for loop vil bli skrevet ut til fargeverdien, 'blå' er matchet.
Forloop2.sh
For navn i Watson Micheal Sinha Amir Lily
gjøre
if [$ name == 'amir']
deretter
for farge i rød grønn blå hvit
gjøre
hvis [$ color == "blå"]
deretter
ekko "favorittfargen på $ navn er $ farge"
gå i stykker
ellers
ekko "Den nåværende fargen er $ farge"
fi
Ferdig
fi
Ferdig
Produksjon:
Kjør manuset.
$ Bash Forloop2.sh
Følgende utgang vises etter å ha kjørt skriptet. For det første skrives to farger, 'rød' og 'grønt'. Da 'Blue' -verdien dukket opp, trykket den personens navn og fargeverdi og avsluttet fra løkken for "Break" -erklæringen.
Eksempel-3: For loop med fortsettelseserklæring
"Fortsett" uttalelse brukes inne i "for" -sløyfen for å hoppe over enhver uttalelse basert på en bestemt tilstand. Lag en fil som heter 'Forloop3.sh ' med følgende skript. Her, en variabel som heter $ kurs brukes til å tilordne en tekstverdi. 'For' Loop brukes til å lese variabelen, $ kurs. Tekstverdien vil bli splittet basert på plassen og lest av 'for' -løkken. Når verdien, er 'Oracle' matchet med $ kurs da vil den skrive ut 'Oracle er ikke tilgjengelig nå'. For andre verdier, 'klassen på $ kurs kjører'. Kurset som ikke er tilgjengelig, vil ikke utføre den siste uttalelsen av 'for' -løkken for fortsettelseserklæringen.
Forloop3.sh
#!/bin/sh
Courses = "Java PHP Oracle VB.nett"
For kurs på $ kurs
gjøre
if [$ kurs == 'Oracle']
deretter
Echo "$ kurs er ikke tilgjengelig nå"
Fortsette
fi
ekko "Klassen på $ kurs kjører"
Ferdig
Produksjon:
Kjør manuset.
$ Bash Forloop3.sh
Følgende utgang vises etter å ha kjørt skriptet.
Eksempel-4: Bruke kommandoutgang som liste
Enhver bash -kommandoutgang kan brukes i 'for' -løkken ved å bruke backtick ('). Lag en fil som heter 'Forloop4.sh ' med følgende skript. Her, 'ls *.tekst' Kommando brukes i løkken. Denne kommandoen vil generere en liste over tekstfilen fra gjeldende katalog. 'For' loop vil iterere hvert filnavn fra kommandoutgangen og lagre det i variabelen $ filnavn som vil skrive ut senere. Her, $ n Variabel brukes til å vise filnummeret.
Forloop4.sh
n = 1
for filnavn i 'ls *.tekst'
gjøre
Echo "File No- $ n: $ filnavn"
((n ++))
Ferdig
Produksjon:
Kjør manuset.
$ Bash Forloop1.sh
Følgende utgang vises etter å ha kjørt skriptet.
Eksempel-5: For at Loop skal lese et område
'For' sløyfe kan brukes til lesing av data. Følgende eksempel Les en rekke karakterer og søk hvert karakter finnes i teksten eller ikke. Lag en fil som heter 'Forloop5.sh ' og legg til følgende skript. Her brukes serien, [A-Z] i 'for' Loop. Det betyr 'for' loop vil iterere for 26 ganger for hver store bokstav. Hvert tegn blir søkt i $ tekst ved å bruke 'awk' -kommando. Hvis noen karakter som er funnet, vil den lagre verdien i $ resultat. NESTE. $ Resultat blir sjekket for alt innhold. Hvis den ikke er tom, vil en melding skrives ut.
Forloop5.sh
tekst = "bash scripting språk"
for c i a… z
gjøre
resultat = 'printf "$ tekst" | awk "/$ c/" '
Hvis [[$ resultat != ""]]
deretter
ekko "$ c eksisterer i teksten"
fi
Ferdig
Kjør manuset.
$ Bash Forloop5.sh
Her finnes alfabetene, 'B', 'L' og 'S' i teksten, "Bash Scripting Language". Så tre utdatilinjer skrives ut.
Eksempel-6: For at Loop skal lese et område med økningen
Eksemplet viser hvordan du kan bruke 'for' Loop for å finne ut alle jevnt tall innenfor et bestemt område. Lag en fil som heter 'Forloop6.sh ' og legg til følgende skript. Her brukes et område på [2-20] i løkken der hvert trinn øker med 2. Løkken vil iterere i 10 ganger og skrive ut nummeret i hvert trinn.
Forloop6.sh
ekko "Skrive ut alle jevnt tall fra 1 til 20"
for n i 2… 20… 2
gjøre
ekko -n "$ n"
Ferdig
printf "\ ndone \ n"
Kjør manuset.
$ Bash Forloop6.sh
Alle de jevne tallene innen 2-20 er skrevet ut etter å ha kjørt manuset.
Eksempel-7: For at Loop skal fungere med fil
Dette eksemplet viser hvordan du kan 'for' Loop for å lese en liste over spesifikk fil. Lag en fil som heter, 'Forloop7.sh ' og legg til følgende skript. Her brukes sløyfen til listen over alle tekstfiler fra gjeldende katalog og erstatter filtypen fra '.txt 'til'.Doc '.
Forloop7.sh
ekko "Bytte ut filtypen av alle tekstfiler til Doc -filen.""
for filnavn i *.tekst; gjøre
mv "$ filnavn" "$ filnavn%.tekst.Doc "
Ferdig
ekko "erstatning gjøres vellykket"
Produksjon:
Opprett en tekstfil først hvis det ikke finnes noen tekstfil i den gjeldende katalogen. Her en tekstfil som heter 'Newfile.txt 'opprettes ved å bruke' Cat '-kommando.
$ katt> newfile.tekst
Kjør skriptet nevnt ovenfor.
$ Bash Forloop7.sh
Deretter kan du sjekke utvidelsen endres eller ikke ved å bruke 'LS' -kommando.
Eksempel-8: For loop med sekvenskommando
Følgende eksempel viser hvordan du kan bruke 'seq'i' for 'loop for å skrive ut en liste over sekvensielt nummer. 'SEQ' -kommandoen fungerer på samme måte som rekkevidden med økning. Lag en fil som heter 'Forloop8.sh ' og legg til følgende skript. Løkken vil skrive ut tallene mellom 1 og 30 ved å utelate tre nummer hvert trinn.
Forloop8.sh
Ekko "Print Numbers ved å hoppe over 3"
for SQ i $ (SEQ 1 3 30)
gjøre
ekko "sekvensnummer: $ sq"
Ferdig
Produksjon:
Kjør manuset.
$ Bash Forloop8.sh
Følgende utgang vises etter å ha kjørt skriptet.
Eksempel-9: Bruke uendelig for loop
Den uendelige sløyfen kan brukes til å gjøre noen repeterende oppgaver mange ganger til en spesifikk tilstand vises. Lag en fil som heter 'Forloop9.sh ' med følgende skript for å sjekke bruken av den uendelige sløyfen. Her er ingen termineringsbetingelser definert i løkken. Løyfen viser menyen med 5 lister til nummer 5 er trykket på. Den vil skrive ut en bestemt melding for andre tall fra 1 til 4 og vise menyen igjen.
Forloop9.sh
for ((;;))
gjøre
ekko "1. Skriv ut suksessmelding "
ekko "2. Skriv ut informasjonsmelding "
ekko "3. Skriv ut advarselsmelding "
ekko "4. Skriv ut feilmelding "
ekko "5. Exit"
Echo -n "Velg hvilket som helst nummer fra [1-5]:"
Les svar
sak "$ svar" i
1) ekko "vellykket fullført.";;
2) ekko "ugyldig inngang" ;;
3) ekko "Datamaskinen din har lavt batteri" ;;
4) ekko "Feil antall argumenter sendes inn" ;;
5) Avslutt 0 ;;
*) ekko "Feil utvalg" ;;
Esac
Ferdig
Kjør manuset.
$ Bash Forloop9.sh
Her presses 9 første gang som ikke eksisterer på listen. For denne inngangen er den skrevet ut "feil valg" og viser menyen igjen. Neste, 1 trykkes og den viste en melding, "vellykket fullført". Neste, 5 presses for å avslutte fra programmet.
Eksempel-10: Bruker for loop uten listen.
'For' løkke kan brukes uten liste eller matrise eller kommandoutgang. Hvordan du kan bruke 'for' Loop for å lese kommandolinjeargumenter vises i dette eksemplet. Lag en fil som heter, 'Forloop10.sh ' og legg til følgende skript. Loopen vil iterere basert på antall kommandolinjeargumenter. $ tellervariabel brukes til å finne hvert trinn i løkken som øker med 1 i hvert trinn.
Forloop10.sh
teller = 1
for tekst
gjøre
hvis [$ counter -eq 2]
deretter
str = "min favorittfarge er"
Elif [$ counter -eq 3]
deretter
str = "Jeg elsker"
ellers
str = "Jeg liker"
fi
ekko "$ str $ tekst"
((teller = $ teller+1))
Ferdig
Kjør skriptet med kommandolinje argumentverdier.
$ Bash Forloop10.SH iskrem blå programmering
Manuset har skrevet ut meldingen "Jeg liker iskrem" når $ telleren er 1, "min favorittfarge er blå" når $ telleren er 2 og "Jeg elsker programmering" når $ telleren er 3.
Eksempel-11: lese filer og kataloger ved å bruke for loop
'For' Loop kan brukes til å skrive ut listen over filer og mapper i den gjeldende katalogen. Lage en fil som heter 'Forloop11.sh'Og legg til følgende skript. Her brukes '*' -symbolet i 'For' -løkken for å lese filene og mappene i den gjeldende katalogen. Loopen leser hver fil eller mappenavn i hvert trinn og skriver den ut i terminalen med et "Tab" -rom.
Forloop11.sh
printf "Pinting filene og mappene i gjeldende katalog… \ n \ n"
for liste i *
gjøre
printf "$ liste \ t"
Ferdig
printf "\ n \ ndone \ n"
Kjør manuset.
$ Bash Forloop11.sh
Fil- og mappenavn på den gjeldende arbeidskatalogen skrives ut etter å ha kjørt skriptet.
Eksempel-12: Bruke et komma i bash C-stil for loop
C-stil 'for' Loop støttes også i bash, og dette 'for' Loop har tre uttrykk. Dette er initialisering, termineringsbetingelse og økning eller reduksjon. Men ved bruk av komma (,), kan du definere flere initialiseringsvariabler i bash som vises i dette eksemplet. Lage en fil som heter, 'Forloop12.sh ' og legg til følgende skript. Nestet 'for' loop brukes i dette skriptet. To initialiseringsvariabler, $ Team, og $ Jersey er erklært i den første 'for' Loop. Den første sløyfen blir avsluttet når $ Team vil mer enn 2. Det er ingen initialiseringsvariabel i den indre 'for' Loop og den indre sløyfen vil bli avsluttet der $ Jersey er mer enn 3. $ Jersey er satt til 1 etter å ha fullført iterasjonen indre sløyfe. Så den ytre sløyfen vil iterere i 2 ganger, og den indre sløyfen vil iterere i 3 ganger.
Forloop12.sh
for ((team = 1, trøye = 1; team <= 2 ; team++))
gjøre
for ((; Jersey <= 3 ; jersey++))
gjøre
Echo "Team No- $ Team, Jersey No- $ Jersey"
Ferdig
Jersey = 1
Ferdig
Kjør manuset.
$ Bash Forloop12.sh
Følgende utgang vises etter å ha kjørt skriptet.
Mange effektive bruksområder for 'for' Loop er prøvd å forklare i denne opplæringen. Etter å ha øvd på eksemplene ovenfor, håper leserne å få klar kunnskap om 'for' Loop og 0able for å bruke denne sløyfen riktig i bash -skriptet.