Till att börja med - låt oss förtydliga den rubriken. Linux har mer än ett möjligt skal, och scripting någon av dem är ett ämne som enkelt kan packa en hel bok. Vad vi ska göra är att täcka de grundläggande delarna i ett bash- skript. Om du inte vet vilket skal du använder, är det förmodligen bash . Processen kommer att vara bekant för alla som har arbetat med DOS bat- filer, det är i princip samma begrepp. Du lägger bara en serie kommandon i en textfil och kör den. Skillnaden härrör från det faktum att bash-skript kan göra mycket mer än satsvisa filer. I själva verket är bash scripting inte så långt från ett fullfjädrad språk som Python. Idag kommer vi att täcka några grunder som input, output, arguments and variables.

Obs! Om vi ​​vill bli riktigt tekniska är bash inte ett Linux-enda skal. Mycket (dock eventuellt inte alla) av följande skulle gälla för alla UNIX-system, inklusive Mac OSX och BSD.

Hej världen

Det är tradition att starta ett nytt "språk" genom att skapa ett enkelt skript för att skriva ut orden "Hello World!". Det är lätt nog, bara öppna din favorit textredigerare och skriv in följande:

 #! / bin / bash echo Hello World! 

Med bara två rader kan det inte vara mycket enklare, men den första raden, #! / Bin / bash, kanske inte är direkt uppenbar. De två första tecknen (ofta kallad hashbang) är en speciell signal. Det berättar för Linux att detta skript ska köras via / bin / bash-skalet, i motsats till C-skalet eller Korn-skalet eller något annat du kanske har installerat. Utan det finns det inget enkelt sätt för Linux att berätta exakt vilken typ av skalskript det här är. Ett Python-skript skulle till exempel börja med något som #! / Usr / bin / python .

Därefter är det bara ekotillståndet, som skriver orden efter det till terminalen (tekniskt till standardutmatning ).

Running your script

Såsom ofta är fallet med Linux finns det flera sätt att göra det här jobbet. Det mest grundläggande sättet är att ringa bash manuellt och mata in skriptfilen som i

 #Filenamn kan vara någonting .sh är en vanlig praxis för skalskript. bash myscript.sh 

Smarta läsare kanske tänker " Men vänta, lade vi inte den hashbang saken in så det skulle veta att använda bash? Varför måste jag köra bash manuellt? "Och svaret är" Du gjorde inte ". Åtminstone skulle du inte ha om vi hade tagit ett ögonblick för att göra manuset körbart på egen hand.

I föregående exempel lanserade vi bash och skickade det manuset. Nu sparar vi oss lite framtida tid genom att göra manuset körbart så att vi inte behöver köra bash manuellt. Det är lika enkelt som ett enda kommando.

 chmod + x myscript.sh 

Och nu kan det köras med filnamnet direkt.

Variabler och argument

Variabler i bash kan vara lite mer förvirrande än några andra skriptspråk, delvis för att de ibland måste vara prefaced med en $ tecken och ibland inte - beroende på vad du gör. Ta följande exempel.

 PATH = $ PATH: / home / josh / script 

Vi hänvisar till samma variabel, PATH, två gånger. En gång finns det ingen $, men den andra gången finns det. Det finns några sätt du kan komma ihåg när en $ är lämplig, men den här författaren använder en "talande" metafor. Om jag pratar med variabeln (som att tilldela det ett nytt värde) kallar jag det med det korta namnet, i det här fallet PATH. Om jag talar om en variabel (som att få sitt nuvarande värde) blir det en mer formell titel ($ PATH). Den exakta resonemanget och den inre funktionen av denna design ligger utanför ramen för denna guide, så försök bara att komma ihåg att du måste inkludera en $ om du försöker hämta informationen i en variabel.

Nu ska vi använda en variabel i vårt skript. Ändra den andra raden så att den ser ut som följande:

 #! / bin / bash echo Hej $ 1! 

Och kör ditt skript igen, men den här gången innehåller ditt namn efter skriptnamnet.

Bash auto-tilldelar vissa variabler till dig, inklusive några som $ 1, $ 2 etc som håller vart och ett av argumenten som skickas till skriptet. Variabler kan omfördelas och bytas på nytt som du vill, så du kan skriva om det föregående manuskriptet som

 #! / bin / bash firstname = $ 1 efternamn = $ 2 echo Hej $ förnamn $ efternamn! 

Som du kan se finns det inga $ tecken när du tilldelar värdet till variabeln, men du behöver dem när du drar informationen ut.

Conditionals och Loops

Inget skript kunde bli mycket långt utan förmåga att analysera eller slingra igenom data. Den vanligaste metoden för att bestämma en åtgärd är att använda if-uttalandet. Det fungerar som du förväntar dig - om någonting så gör saker annat gör något annat. I det här exemplet jämförs strängen av tecken som vi lagrade i variabelnamnet och jämför det med någon hårdkodad text. Om de matchar, skriver den ut specialutgången. Annars fortsätter det som vanligt.

 #! / bin / bash firstname = $ 1 efternamn = $ 2 om ["$ firstname" == "Josh"] sedan echo "What a great name" annars echo Hej $ förnamn $ efternamn! fi 

Slutligen är nästa kärnkomponent bashs förmåga att slingra över data. De normala loopmekanismerna för bash är FOR, WHILE och till och med. Vi börjar med, eftersom det är det enklaste.

 #! / bin / bash counter = 0 #När räknaren är mindre än 10, fortsätt loopning medan [$ mot -lt 50]; gör echo $ counter let counter = counter + 1 gjort 

Det exemplet skapar en räknarevariabel, börjar en loop och fortsätter looping (och lägger till en till räknaren) tills den når gränsen, i det här fallet 50. Någonting efter det färdiga uttalandet kommer att utföras när loppet är klart.

UNTIL fungerar på samma sätt, men som omvänd av WHILE. En stundsling kommer att fortsätta så länge som dess uttryck är sant (mot mindre än 50). Fram till loop tar motsatt tillvägagångssätt, och skulle skrivas som

 tills [$ mot -gt 50]; do 

I det här exemplet kommer "medan mindre än 50" och "till mer än 50" ha nästan identiska resultat (skillnaden är att man kommer att inkludera numret 50 själv och den andra inte. Försök själv att se vilken, och varför.)

Slutsats

Som sagt ovan skulle det ta mycket mer än en enda Komma igång artikel för att fullt ut visa kraften i bash scripting. Bitarna som visas här kan ses som kärnkomponenterna för hur bash fungerar, och bör räcka för att visa dig de grundläggande principerna bakom skalskript i Linux. Om du verkligen vill komma in i magen och börja göra några bra skript, kolla in GNUs officiella bash referensguide här. Glad skript!