Hvordan gjøre et for loop i zsh -skript

Hvordan gjøre et for loop i zsh -skript
Hver sysadmin skal vite hvordan man implementerer skript for å automatisere arbeidsflyten. Selv om vi har mange automatiseringsverktøy som Ansible, er skripting fortsatt et kritisk verktøy for å automatisere oppgaver i Linux -verdenen.

Denne opplæringen vil se på løkker, et grunnleggende konsept innen skripting og programmering generelt. Vi vil spesielt fokusere på hvordan for løkker fungerer.

For Loops grunnleggende struktur

Før vi skriver eksempler for løkker, la oss diskutere strukturen. For løkker adopterer den generelle syntaksen:

til i
gjøre

Ferdig

Du kan passere listen over elementer som en matrise, en serie strenglitteraler (atskilt med mellomrom), eller en rekke tall.

La oss nå vurdere noen få eksempler og illustrere hvordan for løkker fungerer.

Eksempel 1

Tenk på eksemplet som er vist nedenfor. Vi sløyfe over en liste over strengverdier og skriver ut gjeldende streng i løkken.

#!/usr/bin/zsh
til drikke i vannkaffe -vin
gjøre
ekko "drikke: $ drink"
Ferdig

Når du har kjørt skriptet, bør du se hvert element i listen skrevet ut, som vist i eksemplet nedenfor:

$ ./til.sh
Drikk: Vann
Drikk te
Drikke kaffe
Drikk vin

Eksempel 2

Du kan også spesifisere listeverdien i for -loopen som en sekvens av tall. Du gjør dette ved å sette opp start- og sluttverdiene. Syntaksen er under:

Start ... slutt

Ta eksemplet for sløyfe nedenfor for å sløyfe verdier 10 ganger.

#!/usr/bin/zsh
for jeg i 1… 10
gjøre
ekko "nummer: $ i"
Ferdig

Du bør få alle tallene mellom 1 og 10 trykt til terminalen.

Nummer: 1
Nummer 2
..
Nummer: 8
Nummer: 9
Nummer: 10

Eksempel 3

I noen tilfeller, når du bruker antallet av tall, må du hoppe over verdiene med et spesifikt intervall. For å skrive ut de jevnt tallene mellom 10 og 20, må du for eksempel bruke et intervall på 2.

Du kan gjøre dette ved å spesifisere økningen som det tredje argumentet for antall varierende.

Syntaksen er:

Start ... slutt ... økning

Nedenfor er et eksempelkode:

#!/usr/bin/zsh
for jeg i 10… 20… 2
gjøre
ekko "nummer: $ i"
Ferdig

Eksempelkoden ovenfor skal skrive ut alle jevnt tall mellom 10 og 20. Nedenfor er et eksempelutgang:

Nummer: 10
Nummer: 12
..
Nummer: 20

Eksempel 4

En annen vanlig brukssak for en for loop er å iterere over en rekke varer. Tenk på eksemplet som er vist nedenfor:

#!/usr/bin/zsh
Databaser = ('mysql' 'PostgreSql' 'MongoDB' 'Redis' 'Fauna' 'Cockroach DB')
for db i "$ databaser [@]"; gjør
ekko "Database: $ db"
Ferdig

Ovennevnte for loop vil iterere hvert element i matrisen og skrive ut det.

Database: MySQL
Database: PostgreSql
..
Database: Fauna
Database: kakerlakk DB

Bryt og fortsett uttalelser

Du kan også bruke pausen og fortsette nøkkelord for å kontrollere strømmen av løkken inne i et ZSH -skript.

La oss begynne med Break -nøkkelordet.

Bryt nøkkelord

Du kan bruke nøkkelordet til å avslutte den gjeldende sløyfestrømmen og gi kontrollen til følgende blokkering. Hovedbruken av dette er å avslutte sløyfestrømmen hvis en spesifikk tilstand er sann.

For eksempel:

#!/usr/bin/zsh
For DB i MySQL PostgreSql MongoDB Redis Fauna kakerlakk; gjør
if [["$ db" == 'mongodb']]; deretter
gå i stykker
fi
ekko "Database: $ db"
Ferdig

I eksemplet over sløyfes vi over varen og bryter sløyfestrømmen hvis den nåværende varen er MongoDB.

Her er et eksempelutgang:

Database: MySQL
Database: PostgreSql

Fortsett nøkkelord

På den annen side kommer fortsatt nøkkelordet til den nåværende sløyfene og hopper til neste iterasjon.

For eksempel:

#!/usr/bin/zsh
for jeg i 1… 10; gjøre
if [["$ i" == '5']]; deretter
Fortsette
fi
ekko "nummer: $ i"
Ferdig

Når sløyfen er på den 5. iterasjonen, vil den hoppe og hoppe til neste verdi i området. Slik funksjonalitet vil føre til at den 5. verdien ikke blir skrevet ut.

Konklusjon

Denne opplæringen diskuterte hvordan du implementerer for løkker i et ZSH -skript. Det er bra å merke seg at ZSH er bash-basert; Derfor vil sløyfefunksjonaliteten som er opprettet for bash også fungere for ZSH.