BASH (som står for Bourne Again Shell) er et script sprog, der anvendes af de fleste Linux og UNIX-baserede operativsystemer.
Du kan køre BASH-kommandoer inden for et terminalvindue den ene efter den anden, eller du kan tilføje kommandoer til en tekstfil for at producere et shell script.
Det store ved at skrive shell scripts er, at du kan køre dem igen og igen. For eksempel forestil dig, at du skal tilføje en bruger til et system, indstille deres tilladelser og styre deres startmiljø. Du kan enten skrive ned kommandoerne på et stykke papir og køre dem, når du tilføjer nye brugere, eller du kan skrive et enkelt script og bare videresende parametre til det script.
Scripting sprog som BASH har lignende programmering konstruktioner som andre sprog. Du kan f.eks. Bruge importparametre til at få input fra tastaturet og gemme dem som variabler. Du kan derefter få scriptet til at udføre en bestemt handling baseret på værdien af inputparametrene.
En vigtig del af ethvert programmerings- og skriptsprog er evnen til at køre det samme stykke kode igen og igen.
Der er flere måder at gentage kode på (også kendt som løkker). I denne vejledning bliver du vist, hvordan du skriver en "for" -sløjfe.
EN til loop gentager en bestemt del af koden igen og igen. De er nyttige, så en række kommandoer kan fortsætte, indtil en bestemt betingelse er opfyldt, hvorefter de stopper.
I denne vejledning vil du blive vist fem måder at bruge for loop i et BASH script.
Før du kommer i gang
Før du kommer i gang med eksemplerne for loop, skal du åbne et terminalvindue og følge disse trin:
-
Gå ind mkdir scripts (læs mere om mkdir her).
-
Gå ind cd scripts (dette ændrer mappen til scripts ).
-
Gå ind nano examplen.sh (hvor n er det eksempel, du arbejder på).
-
Indtast scriptet.
-
Trykke CTRL + O at gemme og CTRL + X At forlade.
-
Løb bash examplen.sh (igen med n at være det eksempel, du arbejder med).
Sådan løber du gennem en liste
#! / bin / bashfor nummer i 1 2 3 4 5doecho $ numberdoneexit 0
BASH måde at bruge "for" loops er noget anderledes end den måde, de fleste andre programmerings- og scripting sprog håndterer "for" loops. Lad os bryde scriptet ned. I en BASH "for" loop alle erklæringerne mellem gøre og Færdig udføres en gang for hvert emne på listen. I ovenstående eksempel er listen alt, hvad der kommer efter ordet i (dvs. 1 2 3 4 5). Hver gang sløjfen gentages, indsættes den næste værdi i listen i den variabel, der er angivet efter ordet "til" . I ovennævnte loop kaldes variablen nummer . Echo-sætningen bruges til at vise information til skærmen. Derfor tager dette eksempel tallene 1 til 5 og udsender dem en efter en til skærmen: Problemet med ovenstående eksempel er, at hvis du vil behandle en større liste (siger 1 til 500), ville det tage aldre at skrive alle numrene i første omgang. Dette bringer os til det andet eksempel, som viser, hvordan du angiver et start- og slutpunkt: #! / bin / bashfor nummer i {1..10} doecho "$ number" doneexit 0
Reglerne er stort set de samme. Værdierne efter ordet " i" sammensæt listen for at iterere igennem, og hver værdi i listen er placeret i variablen (dvs. tal), og hver gang sløjfen gentager sig, er udsagnene mellem gøre og Færdig udføres. Den største forskel er den måde, listen opstår på. De krøllede parenteser {} betegner i grunden en rækkevidde, og området er i dette tilfælde 1 til 10 (de to prikker adskiller start og slutning af en rækkevidde). Dette eksempel løber derfor gennem hvert tal mellem 1 og 10 og udsender nummeret til skærmen som følger: Den samme sløjfe kunne have været skrevet som dette med syntax identisk med det første eksempel: for antal i 1 2 3 4 5 6 7 8 9 10 Det foregående eksempel viste, hvordan man løber mellem et start- og slutpunkt, så nu ser vi på, hvordan man kan springe tal i rækken. Forestil dig at du vil løbe mellem 0 og 100, men kun vise hvert tiende nummer. Det følgende script viser, hvordan du gør netop det: #! / bin / bashfor nummer i {0..100..10} doecho "$ number" doneexit 0
Reglerne er stort set de samme. Der er en liste, en variabel og et sæt sætninger, der skal udføres mellem gøre og Færdig . Listen denne gang ser sådan ud: {0..100..10}. Det første nummer er 0, og slutnummeret er 100. Det tredje nummer (10) er antallet af elementer i listen, som det vil springe over. Ovennævnte eksempel viser derfor følgende output: BASH måde at skrive til sløjfer er lidt mærkeligt i forhold til andre programmeringssprog. Du kan dog skrive en for-loop i en lignende stil til C-programmeringssproget, som dette: #! / bin / bashfor ((nummer = 1; tal <100; tal ++)) {hvis ($ $% 5 == 0)) thenecho "$ nummer er deleligt med 5" fi} exit 0
Søjlen starter ved at indstille variabelnummeret til 1 (nummer = 1 ). Sløjfen vil fortsætte iterating, mens værdien af et tal er mindre end 100 ( nummer <100 ). Værdien af nummer Ændringer ved at tilføje 1 til det efter hver iteration ( nummer ++ ). Alt mellem de krøllede bøjler udføres gennem hver iteration af løkken. Bitten mellem bøjlerne kontrollerer værdien af a nummer , deler den med 5 og sammenligner resten til 0. Hvis resten er 0, er nummeret deleligt med 5 og vises derefter på skærmen. For eksempel: Hvis du vil ændre trinstørrelsen af iterationen, kan du ændre nummer ++ sektionen for at være nummer = antal + 2 , nummer = antal + 5 , eller nummer = antal + 10 etc. Dette kan reduceres yderligere til nummer + = 2 eller nummer + = 5 . For sløjfer kan gøre mere end gentage lister over tal. Du kan faktisk bruge output fra andre kommandoer som listen. Følgende eksempel viser, hvordan du konverterer lydfiler fra MP3 til WAV: #! / Bin / bashfor fil i ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" færdig
Listen i dette eksempel er hver fil med .MP3-udvidelsen i den aktuelle mappe, og variablen er en fil . Det mpg kommandoen konverterer MP3-filen til WAV. Du skal dog sandsynligvis installere dette ved hjælp af din pakkehåndtering først.
Sådan løber du mellem et start- og slutpunkt
Sådan springes numre i et område
En mere traditionel leder efter loop
Et praktisk eksempel