Den Begyndere Guide til Skrive Linux Shell Scripts
Til at begynde med - lad os præcisere den overskrift. Linux har mere end en mulig shell, og scripting er et emne, der nemt kan pakke en fuld bog. Hvad vi skal gøre er at dække de grundlæggende elementer i et bash script. Hvis du ikke ved, hvilken skal du bruger, er det nok bash . Processen vil være kendt for alle, der har arbejdet med DOS bat- filer, det er stort set det samme koncept. Du sætter bare en række kommandoer i en tekstfil og kører den. Forskellen stammer fra det faktum, at bash scripts kan gøre en masse mere end batch-filer. Faktisk er bash scripting ikke så langt fra et fuldt udviklet sprog som Python. I dag dækker vi nogle få grunde som input, output, argumenter og variabler.
Bemærk : Hvis vi ønsker at blive rigtig teknisk, er bash ikke en Linux-eneste shell. Meget (men muligvis ikke alle) af følgende ville gælde for ethvert UNIX-type system, herunder Mac OSX og BSD'erne.
Hej Verden
Det er tradition at starte et nyt "sprog" ved at oprette et simpelt script til at udsende ordene "Hello World!". Det er nemt nok, skal du bare åbne din yndlings teksteditor og indtaste følgende:
#! / bin / bash echo Hello World!
Med kun to linjer kan det ikke være meget enklere, men den første linje, #! / Bin / bash, er måske ikke umiddelbart indlysende. De to første tegn (ofte kaldet hashbang) er et specielt signal. Det fortæller Linux, at dette script skal køres gennem / bin / bash shell, i modsætning til C shell eller Korn shell eller alt andet du måske har installeret. Uden det er der ikke nogen nem måde for Linux at fortælle præcis, hvilken type shell script dette er. Et Python-script, for eksempel, ville sandsynligvis starte med noget som #! / Usr / bin / python .
Derefter er det kun ekko- erklæringen, som udskriver ordene efter den til terminalen (teknisk til standardudgang ).
Kører dit script
Som det ofte er tilfældet med Linux, er der flere måder at gøre dette job på. Den mest grundlæggende måde ville være at ringe bash manuelt og føje det script filen, som i
#Filenavn kan være noget .sh er en almindelig praksis for shell-scripts. bash myscript.sh
Smarte læsere kan tænke " Men vent, har vi ikke lagt den hashbang ting i, så det ville vide at bruge bash? Hvorfor skulle jeg køre bash manuelt? "Og svaret er" du gjorde det ikke ". I det mindste ville du ikke have, hvis vi havde taget et øjeblik at gøre scriptet eksekverbart alene.
I det foregående eksempel lancerede vi bash og sendte det scriptet. Nu redder vi os selv i fremtiden ved at gøre scriptet eksekverbart, så vi behøver ikke at køre bash manuelt. Det er lige så nemt som en enkelt kommando.
chmod + x myscript.sh
Og nu kan det køres med filnavnet direkte.
Variabler og argumenter
Variabler i bash kan være lidt mere forvirrende end nogle andre script-sprog, dels fordi de nogle gange skal præfaced med $ tegn og undertiden ikke - afhængigt af hvad du laver. Tag følgende eksempel.
PATH = $ PATH: / home / josh / scripts
Vi henviser til den samme variabel, PATH, to gange. Når der ikke er $, men den anden gang er der. Der er et par måder, du kan huske, når en $ er passende, men denne forfatter bruger en "talende" metafor. Hvis jeg taler til variablen (som f.eks. Tildele den en ny værdi) kalder jeg den ved det korte navn, i dette tilfælde PATH. Hvis jeg taler om en variabel (som f.eks. At få den aktuelle værdi), bliver den mere formel ($ PATH). Den præcise begrundelse og det indre design af dette design er uden for denne vejledning, så prøv bare at huske at du skal medtage en $, hvis du forsøger at hente oplysningerne i en variabel.
Nu skal vi bruge en variabel i vores script. Skift den anden linje for at ligne følgende:
#! / bin / bash echo Hej $ 1!
Og genkør dit script, men denne gang indeholder dit navn efter scriptnavnet.
Bash auto-tildeler bestemte variabler til dig, herunder et par såsom $ 1, $ 2 osv., Der indeholder hver af de argumenter, der er overført til scriptet. Variabler kan omfordeles og omdøbes på samme måde som du ønsker, så du kan omskrive det forrige script som
#! / bin / bash fornavn = $ 1 efternavn = $ 2 ekko Hej $ fornavn $ efternavn!
Som du kan se, er der ingen $ tegn når du tildeler værdien til variablen, men du har brug for dem, når du trækker informationen ud.
Conditionals og Loops
Intet script kunne blive meget langt uden evnen til at analysere eller loop gennem data. Den mest almindelige metode til at bestemme et handlingsforløb er at bruge if-erklæringen. Det virker meget som du ville forvente - hvis noget så gør ting ELSE gør noget anderledes. Dette eksempel sammenligner strengen af tegn, som vi lagrede i variabelen fornavn og sammenligner den med nogle hardcoded tekst. Hvis de matcher, udskriver den speciel output. Ellers fortsætter det som normalt.
#! / bin / bash fornavn = $ 1 efternavn = $ 2 hvis ["$ firstname" == "Josh"] derefter ekko "Hvilket godt navn" ellers ekko Hej $ fornavn $ efternavn! fi
Endelig er den næste kerne komponent bash evne til at sløjfe over data. De normale sløjfe mekanismer for bash er FOR, mens og indtil. Vi begynder med, da det er det enkleste.
#! / bin / bash counter = 0 #Hvis tælleren er mindre end 10, fortsæt looping mens [$ counter -lt 50]; gør ekko $ tæller lad modtæller = tæller + 1 færdig
Dette eksempel skaber en tællervariabel, begynder en tidssløjfe og fortsætter looping (og tilføjer en til disken), indtil den når grænsen, i dette tilfælde 50. Alt efter den færdige erklæring vil udføres, når sløjfen er færdig.
TILTIL fungerer på samme måde, men som omvendt af WHILE. Et øjebliks sløjfe vil fortsætte, så længe dets udtryk er sandt (mod mindre end 50). Indtil sløjfen tager den modsatte tilgang, og vil blive skrevet som
indtil [$ mod -gt 50]; gøre
I dette eksempel vil "med mindre end 50" og "indtil mere end 50" have næsten identiske resultater (forskellen er at man vil inkludere nummer 50 selv, og den anden vil ikke. Prøv det selv for at se hvilken, og hvorfor.)
Konklusion
Som nævnt ovenfor ville det tage meget mere end en enkelt Kom godt i gang-artikel for fuldt ud at demonstrere kraften i bash scripting. De her viste stykker kan ses som kernekomponenterne for, hvordan bash fungerer, og det skal være tilstrækkeligt til at vise dig de grundlæggende principper bag shell scripting i Linux. Hvis du virkelig ønsker at komme ind i tarmene og begynde at lave nogle gode scripts, så tjek GNU's officielle bash reference vejledning her. Glad scripting!