Skip to main content

Linux Shell Script Exempel på BASH 'for' Loop

Hur man gör en Minecraft Server (Spigot eller Bukkit) 1.14.4 [Med portforward utan hamachi] (Maj 2025)

Hur man gör en Minecraft Server (Spigot eller Bukkit) 1.14.4 [Med portforward utan hamachi] (Maj 2025)
Anonim

BASH (som står för Bourne Again Shell) är ett skriptspråk som används av de flesta Linux- och UNIX-baserade operativsystem.

Du kan köra BASH-kommandon i ett terminalfönster efter varandra eller du kan lägga till kommandon i en textfil för att skapa ett skalskript.

Det stora med att skriva skalskript är att du kan köra dem om och om igen. Tänk dig att du måste lägga till en användare i ett system, ställa in sina behörigheter och hantera sin startmiljö. Du kan antingen skriva ned kommandona på ett papper och köra dem när du lägger till nya användare eller du kan skriva ett enda skript och bara skicka parametrar till det skriptet.

Skriptspråk som BASH har liknande programmeringskonstruktioner som andra språk. Du kan till exempel använda importparametrar för att få inmatning från tangentbordet och lagra dem som variabler. Du kan sedan få skriptet att utföra en viss åtgärd baserat på värdet av ingångsparametrarna.

En viktig del av något programmerings- och skriptspråk är möjligheten att köra samma kod igen och igen.

Det finns ett antal sätt att upprepa kod (även kända som loopar). I den här guiden kommer du att visa hur man skriver en "för" loop.

en för loop upprepar en viss del av koden om och om igen. De är användbara så att en serie kommandon kan fortsätta löpa tills ett visst villkor är uppfyllt, varefter de kommer att sluta.

I den här guiden visas fem sätt att använda för loop i ett BASH-skript.

Innan du börjar

Innan du börjar med exemplet för loop måste du öppna ett terminalfönster och följ dessa steg:

  1. Stiga på mkdir-skript (läs mer om mkdir här).

  2. Stiga på cd skript (detta ändrar katalogen till skript ).

  3. Stiga på nano examplen.sh (var n är det exempel du jobbar på).

  4. Skriv in skriptet.

  5. Tryck CTRL + O att spara och CTRL + X att lämna.

  6. Springa bash examplen.sh (igen med n vara det exempel du jobbar med).

Så här går du igenom en lista

#! / bin / bashfor nummer i 1 2 3 4 5doecho $ numberdoneexit 0

BASH-sättet att använda "för" loopar skiljer sig något från det sätt på vilket de flesta andra programmerings- och skriptspråk hanterar "för" loopar. Låt oss bryta ned scriptet.

I en BASH "för" loop alla uttalanden mellan do och Gjort utförs en gång för varje objekt i listan.

I ovanstående exempel är listan allt som kommer efter ordet i (dvs 1 2 3 4 5).

Varje gång slingan itereras läggs nästa värde i listan in i variabeln som anges efter ordet "för" . I ovanstående slinga heter variabeln siffra .

Echo-satsen används för att visa information till skärmen.

Därför tar detta exempel siffrorna 1 till 5 och matar ut dem en efter en till skärmen:

  • 1
  • 2
  • 3
  • 4
  • 5

Hur man går mellan en start och slutpunkt

Problemet med ovanstående exempel är att om du vill bearbeta en större lista (säg 1 till 500), skulle det ta tid att skriva alla nummer i första hand.

Detta leder oss till det andra exemplet som visar hur man anger en start- och slutpunkt:

#! / bin / bashfor nummer i {1..10} doecho "$ number" doneexit 0

Reglerna är i princip samma. Värdena efter ordet " i" formulera listan för att iterera igenom och varje värde i listan placeras i variabeln (dvs tal) och varje gång slingan itereras, do och Gjort utförs.

Huvudskillnaden är hur listan bildas. De krökta parenteserna {} betecknar i princip ett intervall, och intervallet är i detta fall 1 till 10 (de två punkterna skiljer början och slutet av ett intervall).

Detta exempel går därför igenom varje nummer mellan 1 och 10 och matar ut numret till skärmen enligt följande:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Samma loop kunde ha skrivits så här, med syntax som är identisk med det första exemplet:

för antal i 1 2 3 4 5 6 7 8 9 10

Hur hoppa över siffror i en räckvidd

Det föregående exemplet visade hur man slår mellan en start- och slutpunkt, så nu tittar vi på hur man hoppa över nummer i intervallet.

Tänk dig att du vill slingra mellan 0 och 100 men visa bara var tionde nummer. Följande skript visar hur man gör just det:

#! / bin / bashfor nummer i {0..100..10} doecho "$ number" doneexit 0

Reglerna är i princip samma. Det finns en lista, en variabel och en uppsättning uttalanden som ska utföras mellan do och Gjort . Listan ser den här tiden ut: {0..100..10}.

Det första numret är 0 och sluttalet är 100. Det tredje numret (10) är antalet poster i listan som det kommer att hoppa över.

Ovanstående exempel visar därför följande utmatning:

  • 0
  • 10
  • 20
  • 30
  • 40
  • 50
  • 60
  • 70
  • 80
  • 90
  • 100

En mer traditionell letar efter loopning

BASH-sättet att skriva för slingor är lite konstigt jämfört med andra programmeringsspråk.

Du kan dock skriva en för loop i en liknande stil till C-programmeringsspråket, så här:

#! / bin / bashfor ((nummer = 1; nummer <100; nummer ++)) {if (($ number% 5 == 0)) thenecho "$ nummer är delbart med 5" fi} exit 0

Slingan börjar med att ställa in det rörliga numret till 1 (nummer = 1 ). Slingan kommer att fortsätta iterera medan värdet av ett tal är mindre än 100 ( nummer <100 ). Värdet av siffra ändras genom att lägga 1 till det efter varje iteration ( antal ++ ).

Allt mellan de krökta stagarna utförs genom varje iteration av slingan.

Biten mellan hävarmen kontrollerar värdet av a siffra , delar den med 5 och jämför resten till 0. Om resten är 0 är numret delbart med 5 och visas sedan på skärmen.

Till exempel:

  • 5 är delbar med 5
  • 10 är delbart med 5
  • 15 är delbart med 5

Om du vill ändra stegstorleken för iterationen kan du ändra numret ++-sektionen för att vara number = nummer + 2 , number = nummer + 5 , eller number = nummer + 10 etc.

Detta kan minskas ytterligare till nummer + = 2 eller nummer + = 5 .

Ett praktiskt exempel

För loopar kan göra mer än iterera listor med siffror. Du kan faktiskt använda utmatningen från andra kommandon som listan.

Följande exempel visar hur du konverterar ljudfiler från MP3 till WAV:

#! / Bin / bashför fil i ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" gjort

Listan i det här exemplet är varje fil med .MP3-tillägget i den aktuella mappen och variabeln är a fil .

De mpg kommandot konverterar MP3-filen till WAV. Du behöver dock förmodligen installera det här med din pakethanterare först.