Denne guiden utdyper noen av de vanlige praksisene i bash -programmering.
Bash scripting
Bash er et skallprogram som er ansvarlig for å tolke og utføre kommandoer. I tillegg til å utføre manuelle kommandoer, støtter Bash også skripting. Disse skriptene er et sett med kommandoer som er erklært i en tekstfil. Bash Scripting er et enkelt og tilgjengelig programmeringsspråk for å lære på Linux. Det er et krav hvis du er interessert i systemadministrasjonsjobber.
Som enhver annen ferdighet, vil utholdenhet og repetisjon hjelpe deg med å forbedre deg. Selv om det ikke er noe faste sett med regler, er her noen av vanene som kan forbedre skriptkvaliteten betydelig.
Riktig innrykk
Innrykk er en stor del av koding. Riktig innrykk er avgjørende for å ha en lesbar og vedlikeholdbar kode.
Riktig innrykk kan være en livredder hvis du jobber med flere nivåer av logikk. Innrykk gjør det enkelt å gjenkjenne logikklagene.
Her er et eksempel på multi-logisk manus med riktig innrykk.
#!/bin/bash
Les -P "Skriv inn en verdi" var_x
if [$ ((var_x%2)) -eq 0]; deretter
Avslutt 0
ellers
Avslutt 1
fi
Slik vil koden se ut uten riktig innrykk.
#!/bin/bash
Les -P "Skriv inn en verdi" var_x
if [$ ((var_x%2)) -eq 0]; deretter
Avslutt 0
ellers
Avslutt 1
fi
Kommentere
Å kommentere er noe av det viktigste når det gjelder å gi mening om koder. Kommentarer skal forklare forskjellige deler av koden, spesielt når den er en sammensatt. Det er uanstrengt å bli forvirret over flere deler av koden, til og med dine egne koder. Hvis det er et stort prosjekt og andre sannsynligvis vil jobbe med samme kode i fremtiden.
For eksempel er her et eksempelskript med og uten kommentarer.
Brukernavn = $ 1
# sjekk brukernavn eksistens
grep ^$ brukernavn: /etc /passwd
Hvis [$? != 0]; deretter
Ekko "Ingen slik bruker: $ Brukernavn"
Avslutt 1
fi
Bruker = $ 1
grep ^$ brukernavn: /etc /passwd
Hvis [$? != 0]; deretter
ekko "$ brukernavn ikke funnet"
Avslutt 1
fi
Returkode hvis noe går galt
Når noe går galt, er det alltid en god idé å returnere en ikke-null verdi. En kode kan løpe galt når som helst, spesielt med betingelser. Å ha en returkode for å jobbe med kan spare massevis av problemer. Det gjør feilsøking mer effektiv.
I dette eksemplet vil vi avgjøre om et tall er rart eller til og med. I stedet for å skrive ut utgangen, vil utgangskoden signalisere hva resultatet var.
#!/bin/bash
Les -P "Skriv inn en verdi" var_x
if [$ ((var_x%2)) -eq 0]; deretter
Avslutt 0
ellers
Avslutt 1
fi
Skriptet eksisterer ved feil
I mange situasjoner vil Bash fortsette å utføre manuset selv når en bestemt del mislykkes, og påvirker resten av manuset dårlig.
For å sikre at skriptet eksisterer når du står overfor en viss dødelig feil, anbefales det å ha følgende linjer i starten.
$ set -o errexit
Noen ganger kan Bash også prøve å bruke en ikke -erklært variabel, noe som forårsaker en logisk feil. Å bruke følgende kommando vil sikre at bash vil slutte å utføre skriptet hvis det bruker en ikke -erklært variabel.
$ set -o substantiv
Kommandosubstitusjon
I situasjoner kan det hende du må jobbe med utgangen fra en bestemt kommando. Vi kan gjøre det ved å bruke kommandosubstitusjonen.
Kommandostasjon har forskjellige måter å implementere.
$ ekko 'Echo “Hello World”'
$ ekko $ (ekko “Hello World)
Det anbefales alltid å bruke det andre alternativet
Meningsfylt variabelnavn
Variabler er en integrert del av et komplekst bash -manus. Hver variabel skal ha et riktig navn som betegner bruken.
Ofte kan navnemønstre også tid; Folk vil unngå å skrive noen få ekstra tegn i bytte mot kortsiktig tidsgevinst. En slik praksis er imidlertid en oppskrift på katastrofe. Når det gjelder langsiktig vedlikehold av slik kode, kan det være komplisert å gi en følelse av formål med en variabel.
Det ville være best hvis du også var konsekvent i å navngi variabler. Tilfeldige variable navnemønstre kan også føre til forvirring i fremtiden.
Se på de to prøvekodene, begge gjør den samme oppgaven. Hvilken kode er bedre å forstå og jobbe med?
#!/bin/bash
Les -P "Angi lengde:" x
Les -p "Enter bredde:" y
z = $ [$ x*$ y]
ekko "område: $ z"
#!/bin/bash
Les -P "Angi lengde:" Lengde
Les -p "Enter bredde:" bredde
område = $ [$ lengde*$ bredde]
Echo "Area: $ Area"
I bash er alle miljøvariablene navngitt med store bokstaver. Det anbefales å bruke små bokstaver for skriptvariabler for å unngå konflikter.
Bruke funksjoner
I bash -programmering er en funksjon en måte å gruppere kommandoer som kan utføres senere. Det hjelper med å redusere kode repetisjon. Funksjoner gjør også koden mer lesbar og vedlikeholdbar.
Nå er det spesifikke scenarier der funksjoner gir mening. Hvis du bruker en håndfull fokuserte kommandoer, kan det å sette opp en funksjon spare deg for mye problemer. Hvis du bare bruker en kommando, har det ingen innvirkning på effektiviteten.
Samme som variabler, skal funksjonsnavnene være meningsfylte.
funksjon fn_odd ()
Lokal var_x
Les -P "Enter Number" var_x
Les var_x
if [$ ((var_x % 2)) -eq 0]; deretter
ekko "til og med"
ellers
ekko "Odd"
fi
Argumenttyper
I bash er det ingen fast måte å erklære en variabel type. Det kan gi opphav til å sammenligne variabler av motstridende datatyper. Å sikre at variablene og argumentene er den samme forventede typen, vil spare deg for mye hodepine.
I det følgende eksempel vil skriptet skrive ut om argumentet er et tall eller ikke.
hvis ! ["$ 1" -eq "$ 1" 2> /dev /null]
deretter
ekko "Feil: ikke nummer"
Avslutt 1
fi
Mangler argumenter eller feil argumentordre
Det er alltid en god idé å anta at brukerinngang sannsynligvis vil ha feil data, uansett hva. Sannsynligheten er høyere når brukeren trenger å legge inn mer enn ett argument.
Du må ha feilkorrigeringsmekanismer på brukerinngangspunktene for å unngå katastrofe på grunn av feil brukerinngang. Gjør instruksjonen klar over hva brukeren skal gjøre.
Riktig utgang
Når du kjører skriptene dine, bør folk vite hva de trenger å vite. De burde ikke være nødt til å lese koden din for å forstå dens formål eller hva den gjør.
Det skal være tilbakemelding på skjermen som forklarer hva som skjer bak kulissene på hvert trinn. For eksempel hva ville brukeropplevelsen være hvis pakkebehandleren ikke skrev ut noen meningsfull output i forskjellige stadier av driften?
Feilsøking
Etter å ha skrevet manuset, kan Bash sjekke skriptsyntaksen for feil uten utførelse. For å utføre en syntakssjekk, bruk følgende bash -kommando.
$ bash -nn