BASH-programmering

Exportera Bash-variabler

Exportera Bash-variabler
Att förstå variabler i Bash-skalet är viktigt för att arbeta med Linux på ett professionellt sätt. Det är ett av de viktigaste kraven för programmering samt att uppnå Linux Professional Institute Certification (LPIC) nivå 1 [2].

Den tidigare publicerade artikeln av Fahmida Yesmin [4] ger dig en underbar introduktion till Bash-variabler. Här går vi vidare och förklarar hur man kan deklarera variabler i Bash på ett sådant sätt att du kan använda dem i andra miljöer på ditt Linux-system, och vilka motsvarande biverkningar du måste ta hänsyn till.

En kort beskrivning av Bash

Bash-skalet släpptes först 1989 och har använts som standardinloggningsskal för de flesta Linux-distributioner. Brian Fox skrev Bash som ett UNIX-skal och kommandospråk för GNU-projektet som en gratis programvaruersättning för Bourne-skalet. Det är en förkortning för Bourne Again Shell. Bash är till stor del kompatibel med sh och innehåller användbara funktioner från Korn-skalet ksh och C-skalet csh [6].

Medan GNU-operativsystemet ger andra skal, inklusive en version av csh, Bash är det interaktiva standardskalet. Den är utformad med tanke på bärbarhet och kör för närvarande på nästan alla versioner av UNIX plus andra operativsystem [9].

Bash-variabler i ett nötskal

Variabler är viktiga komponenter i programmeringsspråk. De refereras och manipuleras i ett datorprogram. Enkelt uttryckt representerar variabler namngivna minnesceller. Detta är detsamma i Bash som i alla programmeringsspråk. Detta gör det möjligt för oss som människor och användare av datorn att lagra värden i datorns "hjärna" och hitta dem igen via det tilldelade namnet på variabeln.

Termen variabel hänvisar till en kombinerad form av två ord, dvs.e., varierar + kan, vilket innebär att dess värde kan ändras, och det kan användas flera gånger. I motsats till detta kallas variabler som inte kan ändras konstanter. [10]

Så länge det finns tillräckligt med minne tillgängligt för ditt skript kan du fritt skapa och använda variabler. Du kan helt enkelt ställa in dem genom att definiera ett variabelnamn och sedan tilldela dess värde. Ett variabelt namn i Bash kan innehålla bokstäver, siffror och understrykningar. Dess namn kan bara startas med en bokstav och en understrykning. Giltiga variabelnamn är storlek, tax5 och _tax20 men inte 5 regler.

Ett variabelt värde i Bash kan innehålla ett nummer, ett enstaka tecken, en teckensträng eller en lista med objekt (kallas array). Den har ingen synlig datatyp och variabelns interna datatyp kommer automatiskt att räknas ut (eller härledas) vid tilldelning av ett värde. Dessutom finns det inget behov av att deklarera variabeln - tilldelning av ett värde till dess referens skapar variabeln automatiskt. Exemplet Bash-skript nedan visar detta för en strängtilldelning och en numerisk nummertilldelning.

#! / bin / bash
welcomeMessage = "Hello World!"
echo $ welcomeMessage
pris = 145
eko $ pris

Namngivningskonventioner för basvariabler

Det finns inga fasta regler för stavning av variabelnamn, bara konventioner. Dessa konventioner används:

För globala IT-företag är det vanligt att arbeta med stilguider för att säkerställa en gemensam kodningsstil bland företaget. Se Developer Editorial för IBM och Google Style Guide [3] för mer information om de konventioner de följer.

Variabel synlighet

Standardfallet är att en variabel är lokalt bunden till en struktur, funktion, skript eller process och inte kan nås utifrån den. Exemplet nedan visar detta för variabeln $ meddelande som tillhör skriptet och $ välkomst som tillhör funktionen outputWelcomeMessage ().

#!/ bin / bash
# definiera ett variabelt meddelande till skriptet
meddelande = ”Hej igen!”
outputWelcomeMessage ()
# definiera en lokal variabel
välkommen = ”Hej!”
echo $ välkommen

outputWelcomeMessage () # utskrifter Hej!
echo $ meddelande # utskrifter Hej igen!

För att säkerställa att en tidigare definierad variabel med samma namn är lokalt bunden använder du nyckelordet local som visas nedan. Utan nyckelordet lokal skulle tilldelningen i rad 8 relatera till den globalt definierade variabeln med samma namn som definierats tidigare.

#!/ bin / bash
# definiera ett variabelt meddelande till skriptet
meddelande = ”Hej igen!”
outputWelcomeMessage ()
# definiera en lokal variabel med samma namn
Lokalt meddelande = ”Hej!”
echo $ meddelande

outputWelcomeMessage () # utskrifter Hej!
echo $ meddelande # utskrifter Hej, igen!

Utöka omfattningen av en variabel

För att göra en intern variabel synlig för andra underordnade processer krävs ytterligare ett steg. Detta steg kallas exportera en variabel. Bash erbjuder användning av nyckelordsexport följt av variabelnamnet. Listan nedan visar detta för den variabla backupPath.

$ backupPath = ”/ opt / backup /”
$ export backupPath

Exportkommandot är ett inbyggt skal som används för att definiera variabeln som en som subshells (skal som skapats från originalet) ärver. Variabler som exporteras kan läsas och skrivas med mer än en process.

Det andra alternativet är att deklarera variabeln som en miljövariabel redan från början. Du kan göra det med hjälp av nyckelordet deklarera följt av alternativet “-x” (se [5] för mer information om deklarera kommandot). Effekten liknar exportkommandot som introducerades tidigare.

$ deklarera -x BACKUPPATH = ”/ opt / backup /”

Ärva från andra sessioner

När du kör ett program ärver det automatiskt dess miljövariabler från den överordnade processen. Till exempel om $ HOME är inställd på / root i föräldern, så är också $ HOME-variabeln inställd på / root.

Ytterligare kommandon

Bland annat kommer Linux med användbara kommandon och alternativ som rör variabler. De två första kallas env och printenv. De listar alla miljövariabler.

Bilden nedan visar utdata från kommandot env i en terminal som körs i en X-session. Den innehåller variabler som $ XTERM (terminal typ), $ SHELL (programmet som anropas vid inloggning och visar / bin / bash för sökvägen till Bash-tolk), $ LS_COLORS (färgerna som används för att markera olika filer typer när du ringer till ls) och $ DESKTOP_SESSION (den nuvarande X-skrivbordsmiljön).

Den tredje och den fjärde är alternativ för exportkommandot - -p och -n. -p är förkortat för utskrift och visar bara alla exporterade variabler i det aktuella skalet med hjälp av kommandot deklarera.

$ export -p
förklara -x DESKTOP_SESSION = "xfce"
förklara -x DISPLAY = ": 0"
förklara -x GLADE_CATALOG_PATH = ":"
förklara -x GLADE_MODULE_PATH = ":"
förklara -x GLADE_PIXMAP_PATH = ":"
förklara -x HOME = "/ home / frank"
förklara -x LANG = "de_DE.UTF-8 "

Alternativet -n används för att avmarkera en miljövariabel. Listan nedan visar detta för den tidigare definierade variabeln BACKUPPATH.

$ export -n BACKUPPATH

Slutsats

Bash är en mycket smart men ibland också lite komplex miljö. Variabler styr hur de olika verktygen interagerar. Exportera variabler hjälper till att kommunicera mellan processer och är lätt att använda i vardagen.

Om Författarna

Jacqui Kabeta är miljöaktivist, ivrig forskare, tränare och mentor. I flera afrikanska länder har hon arbetat inom IT-industrin och NGO-miljöer.

Frank Hofmann är IT-utvecklare, tränare och författare och föredrar att arbeta från Berlin, Genève och Kapstaden. Medförfattare till Debian Package Management Book tillgänglig från dpmb.org

Länkar och referenser

Mus Hur man ändrar vänster och höger musknapp på Windows 10 PC
Hur man ändrar vänster och höger musknapp på Windows 10 PC
Det är en hel norm att alla datormusenheter är ergonomiskt utformade för högerhänta användare. Men det finns musenheter tillgängliga som är speciellt ...
Mus Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Att använda en mus eller tangentbord i fel hållning av överdriven användning kan resultera i många hälsoproblem, inklusive stam, karpaltunnelsyndrom o...
Mus Lägg till musgester i Windows 10 med dessa gratisverktyg
Lägg till musgester i Windows 10 med dessa gratisverktyg
Under senare år har datorer och operativsystem utvecklats kraftigt. Det fanns en tid då användare var tvungna att använda kommandon för att navigera g...