Begynnerveiledningen for å skrive Linux Shell-skript
For startere - la oss klargjøre det overskriften. Linux har mer enn ett mulig skall, og scripting noen av dem er et emne som lett kan pakke en full bok. Det vi skal gjøre, dekker de grunnleggende elementene i et bash- skript. Hvis du ikke vet hvilket skall du bruker, er det sannsynligvis bash . Prosessen vil være kjent for alle som har jobbet med DOS bat- filer, det er egentlig det samme konseptet. Du legger bare en rekke kommandoer i en tekstfil og kjører den. Forskjellen kommer fra det faktum at bash-skript kan gjøre mye mer enn batch-filer. Faktisk er bash scripting ikke så langt fra et fullverdig språk som Python. I dag skal vi dekke noen grunnleggende som input, output, argumenter og variabler.
Merk : Hvis vi ønsker å bli veldig teknisk, er bash ikke et Linux-eneste skall. Mye (men muligens ikke alle) av følgende ville gjelde for ethvert UNIX-type system, inkludert Mac OSX og BSD.
Hei Verden
Det er tradisjon å starte et nytt "språk" ved å lage et enkelt skript for å skrive ut ordene "Hello World!". Det er enkelt nok, bare åpne din favoritt tekstredigerer og skriv inn følgende:
#! / bin / bash echo Hello World!
Med bare to linjer kan det ikke vært mye enklere, men den første linjen, #! / Bin / bash, er kanskje ikke umiddelbart åpenbar. De to første tegnene (ofte kalt en hashbang) er et spesielt signal. Det forteller Linux at dette skriptet skal kjøres gjennom / bin / bash-skallet, i motsetning til C-skallet eller Korn-skallet eller alt annet du kanskje har installert. Uten det er det ingen enkel måte for Linux å fortelle nøyaktig hvilken type skalskript dette er. Et Python-skript, for eksempel, vil sannsynligvis starte med noe som #! / Usr / bin / python .
Etter det er bare ekko- setningen, som skriver ordene etter det til terminalen (teknisk, til standardutgang ).
Kjører ditt script
Som det ofte er tilfellet med Linux, er det flere måter å gjøre denne jobben på. Den mest grunnleggende måten er å ringe bash manuelt og mate den med skriptfilen, som i
#Filenavn kan være noe, .sh er en vanlig praksis for shell-skript. bash myscript.sh
Smarte lesere kan tenke " Men vent, la vi ikke det hashbang ting i så det ville vite å bruke bash? Hvorfor måtte jeg kjøre bash manuelt? "Og svaret er" du gjorde det ikke ". I det minste ville du ikke ha hvis vi hadde tatt et øyeblikk for å gjøre skriptet kjørbart på egen hånd.
I det forrige eksempelet lanserte vi bash og sendte det skriptet. Nå lagrer vi oss selv i fremtiden, ved å gjøre skriptet kjørbart, slik at vi ikke trenger å kjøre bash manuelt. Det er like enkelt som en enkelt kommando.
chmod + x myscript.sh
Og nå kan det kjøres med filnavnet direkte.
Variabler og argumenter
Variabler i bash kan være litt mer forvirrende enn noen andre skriptspråk, delvis fordi de noen ganger må prefaced med $ tegn og noen ganger ikke - avhengig av hva du gjør. Ta følgende eksempel.
PATH = $ PATH: / home / josh / scripts
Vi refererer til den samme variabelen, PATH, to ganger. En gang er det ingen $, men den andre gangen er det. Det er noen måter du kan huske når en $ er riktig, men denne forfatteren bruker en "snakkende" metafor. Hvis jeg snakker til variabelen (for eksempel å gi den en ny verdi), kaller jeg den med kortnavnet, i dette tilfellet PATH. Hvis jeg snakker om en variabel (for eksempel å få sin nåværende verdi) blir det en mer formell tittel ($ PATH). Den nøyaktige begrunnelsen og det indre arbeidet til dette designet er utenfor rammen av denne veiledningen, så prøv å huske at du må inkludere en $ hvis du prøver å hente informasjonen i en variabel.
Nå skal vi bruke en variabel i vårt skript. Endre den andre linjen for å se slik ut:
#! / bin / bash echo Hei $ 1!
Og kjør skriptet ditt igjen, men denne gangen inkluderer du navnet ditt etter skriptnavnet.
Bash automatisk tilordner bestemte variabler for deg, inkludert noen som $ 1, $ 2 etc som holder hver av argumentene som sendes til skriptet. Variabler kan tilordnes og omdøpes på samme måte som du ønsker, så du kan skrive om forrige skript som
#! / bin / bash fornavn = $ 1 etternavn = $ 2 ekko Hei $ fornavn $ etternavn!
Som du kan se, er det ingen $ tegn når du tilordner verdien til variabelen, men du trenger dem når du drar informasjonen ut.
Conditionals og Loops
Ingen skript kan bli veldig langt uten evnen til å analysere eller sløyfe gjennom data. Den vanligste metoden for å bestemme et handlingsforløp er å bruke if-setningen. Det fungerer mye som du ville forvente - hvis noe så gjør ting annet gjør noe annet. Dette eksemplet sammenligner strekningen av tegn som vi lagret i variabelen fornavn og sammenligner den med noen hardkodet tekst. Hvis de samsvarer, skriver den ut spesiell utgang. Ellers fortsetter det som normalt.
#! / bin / bash fornavn = $ 1 etternavn = $ 2 hvis ["$ firstname" == "Josh"] deretter ekko "Hva et godt navn" annet ekko Hei $ fornavn $ etternavn! fi
Endelig er neste kjernekomponent bash evne til å sløyfe over data. De normale sløyfemekanismene for bash er for, mens og til og med. Vi starter med, da det er det enkleste.
#! / bin / bash counter = 0 # Mens telleren er mindre enn 10, fortsett å løse mens [$ mot-lt 50]; gjør ekko $ teller la mot = teller + 1 ferdig
Det eksempelet oppretter en tellervariabel, begynner en loop og fortsetter looping (og legger en til disken) til den når grensen, i dette tilfellet 50. Alt etter den ferdige setningen vil utføres når sløyfen er fullført.
Til og med opererer på samme måte, men som omvendt av WHILE. En stundsløyfe vil fortsette så lenge uttrykket er sant (mot mindre enn 50). Inntil sløyfen tar motsatt tilnærming, og vil bli skrevet som
til [$ mot-50]; gjøre
I dette eksemplet vil "mens mindre enn 50" og "inntil over 50" ha nesten identiske resultater (forskjellen er at man vil inkludere nummer 50 selv, og den andre ikke vil. Prøv det selv for å se hvilken, og hvorfor.)
Konklusjon
Som nevnt ovenfor, ville det ta mye mer enn en enkelt Komme i gang artikkelen for fullt ut å demonstrere kraften til bash scripting. Brikkene som vises her, kan ses som kjernekomponenter av hvordan bash fungerer, og bør være tilstrekkelig til å vise deg de grunnleggende prinsippene bak shell scripting i Linux. Hvis du virkelig ønsker å komme inn i tarmene og begynne å lage flotte skript, kan du sjekke ut GNUs offisielle bash referanseguide her. Glad skripting!