Bash-scripts er praktiske til at automatisere opgaver, og du vil opdage, at de er gode til at bygge simple kommandolinjeapplikationer. Bash-skallen fortolker Bash-scripts, så du behøver ikke installere nogen afhængigheder for at skrive og køre dem. Bash-scripts er også bærbare, da de fleste Unix-baserede operativsystemer bruger den samme shell-fortolker.
Kendskab til Bash-scripting er et must for enhver udvikler, især hvis du arbejder med Unix-baserede systemer.
Variabler i Bash
Bash variabler er store og små bogstaver. For at erklære variable skal du bruge et lighedstegn (=) med navnet til venstre og værdien til højre:
STATE=Washington
Den værdi, som denne erklæring tildeler STAT er et enkelt ord. Hvis du har brug for mellemrum i din værdi, så brug anførselstegn omkring det:
STATE="North Arizona"
Du skal bruge et dollartegn ($) præfiks til referencevariabler i andre variabler eller udsagn:
STATE=Washington
LOCATION="Min placering er $STATE"
Udskrivning af værdier i Bash
Der er flere måder, du kan udskrive variabler på i Bash. Du kan bruge
ekko kommando til grundlæggende output eller C-stilen printf kommando til strengformatering.STATE=Washington
LOCATION="Min placering er $STATE"
ekko$LOCATION
Efter at have erklæret STAT variabel, definerer dette script BELIGGENHED ved at henvise til STATE. If bruger derefter ekko til at udskrive den endelige værdi af LOCATION-variablen.
Det printf nøgleord giver dig mulighed for at bruge formateringsverber til at udlæse data. De strengformaterende verber ligner dem i C og Go, men med begrænsede verber.
Udsagnsord | Funktionalitet |
---|---|
%c | udskriver enkelte tegn |
%o | udskriver oktadecimaler |
%s | udskriver strenge, uafhængigt af hylster |
%x | udskriver små hexadecimale bogstaver |
%X | udskriver store bogstaver hexadecimal |
%d | udskriver heltal |
%e | udskriver videnskabelige begreber flyder med små bogstaver |
%E | udskriver videnskabelige begreber flyder med store bogstaver |
%f | udskriver flydende kommatal |
%% | udskriver et enkelt procentsymbol. |
Her er et eksempel på brug af et verbum med Print søgeord.
STATE=Lagos
printf "Min placering er %s" $STATE
Det printf funktion ville erstatte STAT variabel i positionen af %s verbum, og outputtet ville være "Min placering er Lagos".
Du kan lave kommentarer i Bash med hash eller pund (#) symbol. Skallen ignorerer automatisk kommentarer.
#!/bin/bash
# STATE=Washington
# LOCATION="Min placering er $STATE"
Der er ingen kommentarer med flere linjer. De fleste IDE'er og teksteditorer giver dig mulighed for at kommentere med genvejen Ctrl/Command + skråstreg(/). Du bør være i stand til at bruge genvejen til at oprette flere enkeltlinjekommentarer.
Modtager brugerinput i Bash
Som mange andre programmeringssprog kan du modtage brugerinput i Bash for at gøre dine programmer/scripts mere interaktive. Du kan bruge Læs kommando for at anmode om brugerens input.
Læs respons
I dette tilfælde respons variabel vil holde brugerens input ved levering.
ekko "Hvad vil du?:"
læs svar
ekko $svar
Brugerinputanmodningen vil være på en ny linje i eksemplet ovenfor.
Du kan tilføje -n flag til ekko print erklæring for at beholde linjen, hvor brugeren indtaster input.
echo -n "Hvad vil du have."
læs svar
ekko $svar
Erklærer arrays i Bash
Arrays i Bash er ligesom de fleste sprog. Du kan erklære en matrixvariabel i Bash ved at angive elementerne i parentes.
Lande=('USA' 'Rusland' 'Ukraine', "England", "Taiwan", "Kina")
Adgang til et array via reference til variabelnavnet ville hente det første element. Du kan få adgang til hele arrayet ved at bruge stjernetegnet som indeks.
echo ${Countries[*]}
Du kan også angive indekset for arrayet for at få adgang til et bestemt element. Indekset for et array starter ved nul.
ekko "${Countries[4]}"
Betingede erklæringer i Bash
Bash giver betingelser for beslutningstagning i programmer.
Her er anatomien af et if-else-udsagn i Bash. Du bliver nødt til at bruge semikolon til at angive slutningen af betingelsen.
hvis [[ tilstand ]]; derefter
ekko erklæring 1
elif [[tilstand ]]; derefter
ekko erklæring 2
andet [[tilstand ]]; derefter
ekko erklæring 3
fi
Du skal afslutte hver hvis erklæring med fi søgeord.
hvis [ 1 == 2 ]; derefter
ekko en
elif [ 2 == 3 ]; derefter#andet-hvis
ekko to
andet [ 4 > 3 ];
ekko "korrekt, 3"
fi
Du kan bruge case-udsagn i dine Bash-programmer ved hjælp af sag søgeord. Du bliver nødt til at angive mønsteret efterfulgt af afsluttende parenteser før udsagnet.
CITY=Lagos
sag$CITYi
"Washington") # mønster
ekko "Amerikas Forenede Stater" # udmelding
;; # afslutning på en sag
"Lagos" | "Abuja")
ekko "Nigeria"
;;
"Johannesburg" | "Cape Town")
ekko "Sydafrika"
;;
*) # standardmønster
ekko "Antarktis" # standarderklæring
;;
esac# slutningen af sagsfremstillingen
Du kan definere standard store og små bogstaver ved at bruge stjernetegnet (*) som mønster. Sagsfremstillinger skal slutte med esac søgeord.
Sløjfer i Bash
Afhængigt af dine behov kan du bruge en while-loop, range for-loop eller en C-style for loop til tilbagevendende operationer.
Her er et eksempel på C-stilen for-loop. For-løkker skal slutte med Færdig søgeord, og du skal afslutte for-sætningen med et semikolon efterfulgt af gør søgeord.
til ((a = 0; a < 10; a+2)); gør
ekko$a
Færdig
Udvalget for loop er praktisk til arbejde med filer og mange andre operationer. Du skal bruge i søgeord med intervallet for-loop.
til jeg i {1..7}; gør
ekko$1
Færdig
Her er en simpel uendelig løkke til at demonstrere Bash mens sløjfer i aktion.
navn=1
mens [1 -le 5] # mens 1 < 5
gør
ekko$navn
Færdig
Det -le i tilstandssætningen er den binære operator for mindre end.
Funktioner i Bash
Du behøver ikke søgeord for at erklære funktioner i Bash. Du kan erklære funktioner med navnet og derefter parenteser før funktionens krop.
print_working_directory() {
ekko$PWD#kalder PWD-kommandoen fra scriptet
}
ekko "Du er i $(print_working_directory)"
Funktioner kan returnere variabler i Bash. Alt du behøver er Vend tilbage søgeord.
print_working_directory() {
Vend tilbage$PWD
}
Det print_working_directory funktion returnerer filens arbejdsmappe.
Du kan skrive Shell-scripts på andre sprog
Bash er ikke det eneste sprog, du kan bruge til at interagere med dit operativsystems shell eller bygge kommandolinjeapplikationer. Du kan bruge mange andre sprog som Go, Python, Ruby og Rust.
Mange operativsystemer har Python3 forudinstalleret, og Python er et udbredt sprog. Hvis du har brug for endnu mere funktionalitet end Bash-scripts kan tilbyde, kan du overveje at bruge Python.