Bash-skript kommer godt med for å automatisere oppgaver, og du vil finne at de er flotte for å bygge enkle kommandolinjeapplikasjoner. Bash-skallet tolker Bash-skript, så du trenger ikke å installere noen avhengigheter for å skrive og kjøre dem. Bash-skript er også bærbare siden de fleste Unix-baserte operativsystemer bruker samme shell-tolk.
Kunnskap om Bash-skripting er et must for enhver utviklere, spesielt hvis du jobber med Unix-baserte systemer.
Variabler i Bash
Bash-variabler er store og små bokstaver. For å deklarere variabler, bruk et likhetstegn (=) med navnet til venstre og verdien til høyre:
STATE=Washington
Verdien denne erklæringen tilskriver STAT er et enkelt ord. Hvis du trenger mellomrom i verdien, bruk anførselstegn rundt det:
STATE="North Arizona"
Du må bruke et dollartegn ($) prefiks til referansevariabler i andre variabler eller utsagn:
STATE=Washington
LOCATION="Min plassering er $STATE"
Utskriftsverdier i Bash
Det er flere måter du kan skrive ut variabler i Bash. Du kan bruke ekko kommando for grunnleggende utgang eller C-stil printf kommando for strengformatering.
STATE=Washington
LOCATION="Min plassering er $STATE"
ekko$LOCATION
Etter å ha erklært STAT variabel, definerer dette skriptet PLASSERING ved å referere til STATE. If bruker deretter ekko for å skrive ut den endelige verdien av LOCATION-variabelen.
De printf nøkkelord lar deg bruke formateringsverb for å skrive ut data. Strengeformateringsverbene ligner de i C og Go, men med begrensede verb.
Verb | Funksjonalitet |
---|---|
%c | skriver ut enkelttegn |
%o | skriver ut oktadesimaler |
%s | skriver ut strenger, uavhengig av hylster |
%x | skriver ut små heksadesimale bokstaver |
%X | skriver ut store heksadesimale bokstaver |
%d | skriver ut heltall |
%e | skriver ut vitenskapelige forestillinger med små bokstaver |
%E | skriver ut vitenskapelige forestillinger med store bokstaver |
%f | skriver ut flyttall |
%% | skriver ut et enkelt prosentsymbol. |
Her er et eksempel på bruk av et verb med skrive ut nøkkelord.
STATE=Lagos
printf "Min plassering er %s" $STATE
De printf funksjonen vil erstatte STAT variabel i posisjonen til %s verb, og utgangen vil være "My Location is Lagos".
Du kan lage kommentarer i Bash med hashen eller pund (#) symbol. Skallet ignorerer automatisk kommentarer.
#!/bin/bash
# STATE=Washington
# LOCATION="Min plassering er $STATE"
Det er ingen kommentarer med flere linjer. De fleste IDE-er og tekstredigerere lar deg kommentere med snarveien Ctrl/Command + skråstrek(/). Du bør kunne bruke snarveien til å lage flere enkeltlinjekommentarer.
Mottar brukerinndata i Bash
Som mange andre programmeringsspråk kan du motta brukerinndata i Bash for å gjøre programmene/skriptene dine mer interaktive. Du kan bruke lese kommando for å be om brukerens inndata.
lese respons
I dette tilfellet respons variabelen vil holde brukerens input ved levering.
ekko "Hva vil du?:"
les svar
ekko $respons
Forespørselen om brukerinndata vil være på en ny linje i eksemplet ovenfor.
Du kan legge til -n flagg til ekko print statement for å beholde linjen der brukeren skriver inn.
echo -n "Hva vil du."
les svar
ekko $respons
Erklærer Arrays i Bash
Arrays i Bash er akkurat som de fleste språk. Du kan erklære en matrisevariabel i Bash ved å spesifisere elementene i parentes.
Land=('USA' 'Russland' 'Ukraina', "England", "Taiwan", "Kina")
Å få tilgang til en matrise via referanse til variabelnavnet vil hente det første elementet. Du kan få tilgang til hele matrisen ved å bruke stjernetegnet som indeks.
echo ${Countries[*]}
Du kan også spesifisere indeksen til matrisen for å få tilgang til et spesifikt element. Indeksen til en matrise starter på null.
ekko "${Countries[4]}"
Betingede erklæringer i Bash
Bash gir betingelser for beslutningstaking i programmer.
Her er anatomien til en if-else-utsagn i Bash. Du må bruke semikolon for å angi slutten av betingelsen.
hvis [[ tilstand ]]; deretter
ekko uttalelse 1
elif [[tilstand ]]; deretter
ekko uttalelse 2
ellers [[tilstand ]]; deretter
ekko uttalelse 3
fi
Du må avslutte hver hvis uttalelse med fi nøkkelord.
hvis [ 1 == 2 ]; deretter
ekko en
elif [ 2 == 3 ]; deretter#eller hvis
ekko to
ellers [ 4 > 3 ];
ekko "riktig, 3"
fi
Du kan bruke kasussetninger i Bash-programmene dine ved å bruke sak nøkkelord. Du må spesifisere mønsteret etterfulgt av sluttparenteser før setningen.
CITY=Lagos
sak$CITYi
"Washington") # mønster
ekko "Amerikas forente stater" # uttalelse
;; # slutt på en sak
"Lagos" | "Abuja")
ekko "Nigeria"
;;
"Johannesburg" | "Cape Town")
ekko "Sør-Afrika"
;;
*) # standardmønster
ekko "Antarktis" # standardsetning
;;
esac# slutten av saksuttalelsen
Du kan definere standard store og små bokstaver ved å bruke stjernetegnet (*) som mønster. Saksuttalelser må avsluttes med esac nøkkelord.
Løkker i Bash
Avhengig av dine behov, kan du bruke en while-løkke, range for-loop eller en C-stil for loop for tilbakevendende operasjoner.
Her er et eksempel på C-stil for-loop. For-løkker må slutte med ferdig nøkkelord, og du må avslutte for-setningen med et semikolon etterfulgt av gjøre nøkkelord.
til ((a = 0; a < 10; a+2)); gjøre
ekko$a
ferdig
Utvalget for loop kommer godt med for arbeid med filer og mange andre operasjoner. Du må bruke i nøkkelord med området for-loop.
til Jeg i {1..7}; gjøre
ekko$1
ferdig
Her er en enkel uendelig løkke for å demonstrere Bash samtidig som løkker i aksjon.
navn=1
samtidig som [ 1 - le 5 ] # mens 1 < 5
gjøre
ekko$navn
ferdig
De -le i betingelsessetningen er den binære operatoren for mindre enn.
Funksjoner i Bash
Du trenger ikke nøkkelord for å deklarere funksjoner i Bash. Du kan deklarere funksjoner med navnet og deretter parenteser foran funksjonens kropp.
print_working_directory() {
ekko$PWD#ringer PWD-kommandoen fra skriptet
}
ekko "Du er i $(print_working_directory)"
Funksjoner kan returnere variabler i Bash. Alt du trenger er komme tilbake nøkkelord.
print_working_directory() {
komme tilbake$PWD
}
De print_working_directory funksjonen returnerer arbeidskatalogen til filen.
Du kan skrive Shell-skript på andre språk
Bash er ikke det eneste språket du kan bruke til å samhandle med operativsystemets skall eller bygge kommandolinjeapplikasjoner. Du kan bruke mange andre språk som Go, Python, Ruby og Rust.
Mange operativsystemer har Python3 forhåndsinstallert, og Python er et utbredt språk. Hvis du trenger enda mer funksjonalitet enn Bash-skript kan tilby, bør du vurdere å bruke Python.