Overzicht voor Loop in Shell Scripting

Voor loop in Shell Scripting hierin, laten we zeggen dat als we een taak of een operatie herhaaldelijk willen uitvoeren, we dezelfde code zoveel keer kunnen schrijven, wat een tijdrovende taak is en ook niet efficiënt. Om dit soort scenario's te voorkomen, kunnen we lussen gebruiken zoals voor lussen in een programmeertaal. For-lus wordt dus gebruikt om een ​​bepaalde taak uit te voeren, zoals optellen / vermenigvuldigen of een andere bewerking gedurende een bepaald aantal keren, totdat de beëindigingsvoorwaarde in elk besturingssysteem is bereikt. We hoeven niet steeds opnieuw dezelfde code te schrijven met behulp van for loop.

Syntaxis van voor lus

De syntaxis van for loop in shell scripting kan op verschillende manieren worden weergegeven, zoals hieronder:

1. Eerste syntaxismethode

for var in list
do
command1
command2
done

Uit het bovenstaande voorbeeld hebben we vooraf gedefinieerde trefwoorden of ingebouwde trefwoorden zoals voor, doen, gedaan en in. Lijst is een lijst met variabelen of een lijst met woorden of een lijst met getallen en var is een variabelenaam tijdens die iteratie. Als er geen lijst wordt verstrekt, neemt bash een positionele parameter die we in de shell hebben doorgegeven. In de bovenstaande for-lus voert het alle opdrachten uit die er zijn tussen doen en gedaan voor n aantal keren waarbij n de grootte van de lijst is. Als de grootte van de lijst bijvoorbeeld 5 is met nummers van 1 tot 5, wordt tijdens de eerste iteratie 1 opgeslagen in var en worden bewerkingen op var uitgevoerd door de body van de for-lus waar opdrachten aanwezig zijn.

2. Tweede syntaxismethode

for ( ( expr1; expr2; expr3 ))
do
command1
command2
….
done

In de bovenstaande syntaxis is deze syntaxis vergelijkbaar met de syntaxis van for loop in de programmeertaal c. In for lus zijn er drie expressies waarbij de eerste expressie voor initialisatie is, de tweede voor voorwaardelijke controle en de derde voor het bijwerken van iterator. De uitvoering in de bovenstaande lus start als volgt, voordat de eerste iteratie expr1 wordt gestart, wat betekent dat de initialisatie wordt uitgevoerd nadat de bewerkingen / opdrachten tussen do en done iteratief worden uitgevoerd totdat expr2 evalueert naar true en na elke iteratie expr3 de update iteratorwaarde (teller) zodat bewerkingen worden uitgevoerd op het volgende element of waarde in de lijst of array of tekenreeks.

Stroomdiagram - voor lus in Shell Scripting

Laten we een voorbeeld van een lus bekijken en de stroom ervan bespreken met behulp van het stroomdiagram.

for filename in *.dat
do
echo cp $fname orig_$fname
done

In het bovenstaande stroomdiagram leggen we de stroom van for-lus uit die door een lijst met bestandsnamen loopt en er zijn vier stappen in de stroom, zoals processtroom, variabele waarde, proces en stdout. In de processtroom wordt uitgelegd wanneer de for-lus start, iteratorwaarde, waarbij de voorwaarde wordt gecontroleerd of aan de voorwaarde wordt voldaan en vervolgens het proces wordt uitgevoerd, anders wordt het proces beëindigd. In variabele waarde, iteratie door iteratie, krijgen we er een bestandsnaam in zoals textfile.dat en tijdens het proces voert het een echo-instructie uit waarbij het een kopie-instructie toont met een oude bestandsnaam en een nieuwe bestandsnaam op stdout. Dit is dus de stroom van for-lus die de lijst met invoerbestandsnamen doorloopt.

Output:

Hoe werkt Loop in Shell Scripting?

For loop in shell script werkt op de volgende manier telkens wanneer shell het trefwoord ziet, want het weet dat het een set opdrachten één keer moet herhalen voor elk item in een lijst. Telkens wanneer iteratie wordt uitgevoerd, wordt een item in de lijst toegewezen aan de variabele var en wordt de var verwerkt via de lijst met opdrachten die aanwezig zijn in de lus tussen doen en klaar worden uitgevoerd voordat naar het volgende item in de lijst of volgende iteratie wordt gegaan. We krijgen toegang tot de waarde in de var met $ vóór de variabele, zodat wanneer shell-script deze verwerkt, de waarde in de var in plaats daarvan wordt vervangen.

Voorbeeld:

for filename in *.txt
do
ls filename
done

In het bovenstaande programma geven we een lijst van .txt-bestanden door als invoer voor de for-lus en de variabelenaam is een bestandsnaam waarin het .txt-bestand de bestandsnaam opslaat en vervolgens verwerkt door het .txt-bestand in de bestandsnaam op te nemen en vervolgens hetzelfde proces wordt herhaald totdat alle .txt-bestanden zijn verwerkt.

Output:

Voorbeelden van for loop

Tot nu toe hebben we besproken hoe for loop werkt in shellscript en verschillende syntaxis. Laten we nu een paar voorbeelden bekijken en ze doornemen en elk voorbeeld uitleggen wat het doet

Voorbeeld 1

Laten we een lijst met statische waarden als invoer voor for-lus weergeven en hoe deze wordt uitgevoerd, zoals hieronder:

for a day in Fri Thu Wed Tue Mon
do
echo “Todays day is $day”
done

In het bovenstaande voorbeeld moeten we invoerwaarden niet doorgeven, omdat scheidingsteken als we passeren beschouwt dat scheidingsteken ook een waarde is als 'Vrij' en we moeten geen lijst met waarden gebruiken met dubbele aanhalingstekens 'als we ze met dubbele aanhalingstekens doorgeven, shell script zal alle waarden als een enkele waarde behandelen.

Een voorbeeld o / p: vandaag is: vr do wo di ma (als we dubbele aanhalingstekens gebruiken)

Output:

Voorbeeld 2

Laten we nu een ander voorbeeld bekijken waarin we vóór de invoerlijst gebruiken, zoals hieronder:

Month = “Jan Feb Mar Apr May Jun”
for mon in $Month
do
echo “Month is $mon”
done

In het bovenstaande voorbeeld doen we dezelfde uitvoering van for loop als in het bovenstaande voorbeeld, maar in plaats van het lezen van de invoerlijst wordt het trefwoord “in” gebruikt. In shell scripting moet elke variabele worden weergegeven in dubbele aanhalingstekens, maar er zijn enkele uitzonderingen, zoals als we dubbele aanhalingstekens in $ Month hierboven gebruiken voor de lusregel, dan worden hele woorden als een enkele regel behandeld. We moeten er dus voor zorgen.

Output:

Voorbeeld 3

Nu zullen we voor lus zonder invoerlijst schrijven in de for lus-instructie. In plaats daarvan zullen invoer van positieargumenten naar het script en voorbeeld als volgt worden doorgevoerd:

Laten we de scriptnaam shell als sample.sh en de inhoud ervan zoals hieronder:

for num
do
echo “Number is $num”
done
./sample.sh 1 2 3 4 5

In het bovenstaande voorbeeld wordt invoer voor for-lus doorgegeven uit de lijst met argumenten die aan het script wordt gegeven, zodat het voor elk argument alle opdrachten verwerkt en de uitvoer weergeeft totdat alle argumenten zijn herhaald.

Output:

Conclusie - voor loop in Shell Scripting

Eindelijk draait het allemaal om loop in shell scripting. We hebben besproken wat voor lus in shell-scripting is, voor lus-syntaxis, het stroomdiagram waarin de stroom van for-lus wordt uitgelegd, hoe for-lus in shell werkt en voorbeelden van voor lus in shell-scripting. Ik hoop dat je de lus goed begrijpt, hoe je deze in shell-scripting kunt gebruiken en na het lezen van dit artikel kunt uitvoeren.

Aanbevolen artikelen

Dit is een gids voor For loop in Shell Scripting. Hier bespreken we de introductie, How for loop werkt in shell scripting, Flow Diagram en Voorbeeld van for loop. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie–

  1. Lussen in R
  2. Spark SQL Dataframe
  3. Multidimensionale database
  4. Voordelen van datavisualisatie

Categorie: