BASH (som står for Bourne Again Shell) er et skriptspråk som brukes av de fleste Linux og UNIX-baserte operativsystemer.
Du kan kjøre BASH-kommandoer i et terminalvindu en etter hverandre, eller du kan legge til kommandoene i en tekstfil for å lage et shell-skript.
Det flotte med å skrive shell-skript er at du kan kjøre dem igjen og igjen. For eksempel forestill deg at du må legge til en bruker i et system, angi sine tillatelser og administrere sitt startmiljø. Du kan enten skrive ned kommandoene på et stykke papir og kjøre dem når du legger til nye brukere, eller du kan skrive et enkelt skript og bare sende parametere til det skriptet.
Skriptspråk som BASH har lignende programmeringskonstruksjoner som andre språk. Du kan for eksempel bruke importparametere for å få innspill fra tastaturet og lagre dem som variabler. Du kan da få skriptet til å utføre en bestemt handling basert på verdien av inngangsparametrene.
En sentral del av ethvert programmerings- og skriptspråk er evnen til å kjøre det samme stykket kode igjen og igjen.
Det finnes en rekke måter å gjenta kode på (også kjent som løkker). I denne veiledningen vil du bli vist hvordan du skriver en "for" loop.
EN til loop gjentar en viss del av koden om og om igjen. De er nyttige slik at en rekke kommandoer kan fortsette å løpe til en bestemt tilstand er oppfylt, hvorpå de vil stoppe.
I denne veiledningen vil du bli vist fem måter å bruke forløkken i et BASH-skript.
Før Komme i gang
Før du begynner med eksemplene for forløp, må du åpne et terminalvindu og følge disse trinnene:
-
Tast inn mkdir-skript (lære mer om mkdir her).
-
Tast inn cd-skript (dette endrer katalogen til skript ).
-
Tast inn nano examplen.sh (hvor n er eksemplet du jobber med).
-
Skriv inn skriptet.
-
trykk CTRL + O å lagre og CTRL + X å gå ut av
-
Løpe bash examplen.sh (igjen med n å være eksemplet du jobber med).
Slik løper du gjennom en liste
#! / bin / bashfor nummer i 1 2 3 4 5doecho $ numberdoneexit 0
BASH-måten å bruke "for" looper er noe annerledes enn de fleste andre programmerings- og skriptspråk håndterer "for" looper. La oss bryte ned scriptet. I en BASH "for" loop alle, uttalelsene mellom gjøre og ferdig utføres en gang for hvert element i listen. I eksemplet ovenfor er listen alt som kommer etter ordet i (dvs. 1 2 3 4 5). Hver gang sløyfen iterates, settes den neste verdien i listen inn i variabelen som er angitt etter ordet "til" . I ovennevnte sløyfe kalles variabelen Nummer . Ekko-setningen brukes til å vise informasjon til skjermen. Derfor tar dette eksemplet tallene 1 til 5 og sender dem en etter en til skjermen: Problemet med eksempelet ovenfor er at hvis du vil behandle en større liste (si 1 til 500), vil det ta tid å skrive alle tallene i utgangspunktet. Dette bringer oss til det andre eksempelet som viser hvordan du angir et start- og sluttpunkt: #! / bin / bashfor nummer i {1..10} doecho "$ number" doneexit 0
Reglene er i utgangspunktet de samme. Verdiene etter ordet " i" utgjør listen for å iterere gjennom, og hver verdi i listen er plassert i variabelen (dvs. tall), og hver gang sløyfen iterates, er uttalelsene mellom gjøre og ferdig utføres. Hovedforskjellen er måten listen er dannet på. De krøllete parentesene {} angir i utgangspunktet et område, og området er i dette tilfelle 1 til 10 (de to punktene skiller starten og slutten av et område). Dette eksemplet løper derfor gjennom hvert tall mellom 1 og 10 og sender nummeret til skjermen som følger: Den samme sløyfen kunne ha blitt skrevet slik, med syntax som er identisk med det første eksempelet: for antall i 1 2 3 4 5 6 7 8 9 10 Det forrige eksempelet viste hvordan man går mellom et start- og sluttpunkt, så nå ser vi på hvordan du hopper over tall i rekkevidde. Tenk deg at du vil gå mellom 0 og 100, men bare vise hvert tiende nummer. Følgende skript viser hvordan du gjør nettopp det: #! / bin / bashfor nummer i {0..100..10} doecho "$ number" doneexit 0
Reglene er i utgangspunktet de samme. Det er en liste, en variabel og et sett med uttalelser som skal utføres mellom gjøre og ferdig . Listen denne gangen ser slik ut: {0..100..10}. Det første nummeret er 0 og sluttnummeret er 100. Det tredje nummeret (10) er antall elementer i listen som det vil hoppe over. Eksemplet ovenfor viser derfor følgende utgang: BASH-måten å skrive på løkker er litt merkelig i forhold til andre programmeringsspråk. Du kan imidlertid skrive en for sløyfe i en lignende stil til C-programmeringsspråket, slik som dette: #! / bin / bashfor ((tall = 1; tall <100; tall ++)) {hvis ($ $% 5 == 0)) thenecho "$ tall er delbart med 5" fi} exit 0
Sløyfen begynner med å sette det variable nummeret til 1 (tall = 1 ). Sløyfen vil fortsette iterating mens verdien av et tall er mindre enn 100 ( tall <100 ). Verdien av Nummer endres ved å legge 1 til det etter hver iterasjon ( nummer ++ ). Alt mellom de krøllete bøylene utføres gjennom hver iterasjon av løkken. Biten mellom bøylene kontrollerer verdien av a Nummer , deler den med 5, og sammenligner resten til 0. Hvis resten er 0, er nummeret delbart med 5 og vises da på skjermen. For eksempel: Hvis du vil endre trinnstørrelsen til iterasjonen, kan du endre nummer ++-delen til å være tall = nummer + 2 , tall = antall +5 , eller tall = antall + 10 etc. Dette kan ytterligere reduseres til nummer + = 2 eller nummer + = 5 . For sløyfer kan gjøre mer enn gjentatte lister over tall. Du kan faktisk bruke utdataene 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" ferdig
Listen i dette eksemplet er hver fil med .MP3-utvidelsen i gjeldende mappe og variabelen er a fil . De mpg kommandoen konverterer MP3-filen til WAV. Du må imidlertid sannsynligvis installere dette ved hjelp av pakkebehandleren først.
Slik løper du mellom start- og sluttpunkt
Slik hopper tall i et område
En mer tradisjonell leter etter loop
Et praktisk eksempel