BASH programozás

Bash-változók exportálása

Bash-változók exportálása
A Bash shell változók megértése elengedhetetlen ahhoz, hogy professzionálisan dolgozzunk a Linuxszal. Ez a programozás, valamint a Linux Professional Institute Certification (LPIC) 1. szintű megszerzésének egyik legfontosabb követelménye [2].

Fahmida Yesmin korábban megjelent cikke [4] csodálatos bevezetést nyújt a Bash változókba. Itt tovább lépünk, és elmagyarázzuk, hogyan deklarálhatjuk a változókat a Bash-ban oly módon, hogy azokat felhasználhassuk a Linux-rendszer más környezeteiben, és mely megfelelő mellékhatásokat kell figyelembe venni.

Bash rövid leírása

A Bash shell először 1989-ben jelent meg, és a legtöbb Linux disztribúció alapértelmezett bejelentkezési héjaként használták. Brian Fox a Bash-t UNIX héjként és parancsnyelvként írta a GNU Project számára, mint a Bourne shell ingyenes szoftvercseréjét. Ez egy rövidítés Bourne Again Shell. Bash nagyrészt kompatibilis a következőkkel: SH és a Korn héj hasznos funkcióit tartalmazza ksh és a C héj csh [6].

Míg a GNU operációs rendszer más héjakat is tartalmaz, beleértve a csh, A Bash az alapértelmezett interaktív shell. A hordozhatóságot szem előtt tartva tervezték, és jelenleg a UNIX szinte minden verzióján, valamint más operációs rendszereken fut [9].

Bash változók dióhéjban

A változók a programozási nyelvek alapvető elemei. Számítógépes programban hivatkoznak rájuk és manipulálják őket. Egyszerűen fogalmazva, a változók az elnevezett memória cellákat képviselik. Ez ugyanaz a Bash-ban, mint bármely programozási nyelvben. Ez lehetővé teszi számunkra, hogy emberekként és a számítógép használóként értékeket tároljunk a számítógép „agyában”, és újra megtaláljuk őket a változó hozzárendelt nevén keresztül.

A változó kifejezés két szó együttes alakjára utal, azaz.e., változhat + képes, ami azt jelenti, hogy az értéke megváltoztatható, és többször is használható. Ezzel ellentétben azokat a változókat, amelyeket nem lehet megváltoztatni, konstansoknak nevezzük. [10]

Mindaddig, amíg elegendő memória áll rendelkezésre a szkripthez, szabadon létrehozhat és használhat változókat. Egyszerűen beállíthatja őket úgy, hogy meghatároz egy változó nevet, majd hozzárendeli annak értékét. A Bash változónevében betűk, számjegyek és aláhúzások szerepelhetnek. A neve csak betűvel és aláhúzással kezdődhet. Érvényes változónevek: size, tax5 és _tax20, de nem 5 szabályok.

A Bash változó értéke tartalmazhat számot, egyetlen karaktert, karakterláncot vagy elemek listáját (tömbnek hívva). Nincs látható adattípusa, és a változó belső adattípusa automatikusan kitalálódik (vagy levezetésre kerül) egy érték hozzárendelésekor. Ezenkívül nincs szükség a változó deklarálására - ha értéket rendelünk a referenciához, akkor a változó automatikusan létrejön. Az alábbi Bash szkript ezt példázza egy karakterlánc-hozzárendeléshez és egy numerikus szám-hozzárendeléshez.

#! / bin / bash
welcomeMessage = "Helló világ!"
echo $ welcomeMessage
ár = 145
visszhang $ ár

A Bash-változók konvencióinak elnevezése

A változók nevének helyesírására nincsenek rögzített szabályok, csak konvenciók. Ezeket a konvenciókat használják:

A globális informatikai vállalatok számára általában stílusismertetőkkel kell dolgozni, hogy biztosítsák a vállalat közös kódolási stílusát. Az általuk követett konvenciókkal kapcsolatos további információkért lásd az IBM fejlesztői szerkesztőségét és a Google stílus útmutatóját [3].

Változó láthatóság

Az alapértelmezett eset az, hogy egy változó lokálisan kapcsolódik egy struktúrához, függvényhez, szkripthez vagy folyamathoz, és nem érhető el rajta kívülről. Az alábbi példa ezt mutatja a szkripthez tartozó $ változó és a outputWelcomeMessage () függvényhez tartozó $ welcome változó esetén.

#!/ bin / bash
# definiáljon változó üzenetet a szkripthez
message = ”Hello, még egyszer!”
outputWelcomeMessage ()
# definiál egy helyi változót
welcome = ”Hello!”
echo $ welcome

outputWelcomeMessage () # kinyomtatja Hello!
echo $ message # nyomtat Hello, még egyszer!

Annak érdekében, hogy egy korábban definiált, azonos nevű változó helyileg legyen kötve, használja a következő kulcsszót: local. A local kulcsszó nélkül a 8. sorban lévő hozzárendelés a korábban definiált azonos nevű, globálisan definiált változóra vonatkozna.

#!/ bin / bash
# definiáljon változó üzenetet a szkripthez
message = ”Hello, még egyszer!”
outputWelcomeMessage ()
# definiál egy azonos nevű helyi változót
Helyi üzenet = ”Hello!”
echo $ üzenet

outputWelcomeMessage () # kinyomtatja Hello!
echo $ message # nyomtat Hello, még egyszer!

A változó hatókörének kiterjesztése

Ahhoz, hogy egy belső változó látható legyen a többi gyermek számára, további lépésre van szükség. Ezt a lépést változó exportálásának nevezzük. A Bash az export kulcsszó és a változó neve használatát kínálja. Az alábbi felsorolás ezt bizonyítja a változó backupPath esetében.

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

Az export parancs egy beépített shell, amelyet a változó definiálására használnak, amelyet az alhéjak (az eredetiből keletkezett héjak) örököl. Az exportált változókat egynél több folyamat olvashatja és írhatja.

A második lehetőség az, hogy a változót kezdettől fogva környezeti változóvá nyilvánítjuk. Ezt megteheti a deklarálás kulcsszóval, majd az „-x” opcióval (a deklarálás paranccsal kapcsolatos további információkért lásd [5]). A hatás hasonló a korábban bevezetett export parancshoz.

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

Örököljön más munkamenetekből

Amikor egy programot futtat, az automatikusan örökli környezeti változóit a szülői folyamatból. Például, ha a $ HOME értéke / root a szülőben, akkor a gyermek $ HOME változója szintén / root lesz.

További parancsok

Többek között a Linux hasznos parancsokkal és opciókkal rendelkezik, amelyek a változókhoz kapcsolódnak. Az első kettőt env-nek és printenv-nek hívják. Felsorolják az összes környezeti változót.

Az alábbi kép az env parancs kimenetét mutatja az X munkamenetben futtatott terminálon. Tartalmaz olyan változókat, mint $ XTERM (terminál típusa), $ SHELL (a bejelentkezéskor meghívott program, és a / bin / bash-t mutatja a Bash-tolmács elérési útjához), $ LS_COLORS (a különböző fájlok kiemeléséhez használt színek) típusok az ls hívásakor), és $ DESKTOP_SESSION (a jelenlegi X asztali környezet).

A harmadik és a negyedik az export parancs - -p és -n opciói. -A p a nyomtatás rövidítése, és csak a deklarálás paranccsal jeleníti meg az összes exportált változót az aktuális héjban.

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

Az -n opció egy környezeti változó törlésére szolgál. Az alábbi felsorolás ezt demonstrálja a korábban definiált BACKUPPATH változó esetében.

$ export -n BACKUPPATH

Következtetés

A Bash nagyon okos, de néha kissé összetett környezet is. A változók vezérlik a különböző eszközök kölcsönhatását. A változók exportálása segíti a folyamatok közötti kommunikációt, és könnyen használható a mindennapi életben.

A szerzőkről

Jacqui Kabeta környezetvédő, lelkes kutató, oktató és mentor. Több afrikai országban dolgozott az informatikai iparban és a civil szervezetek környezetében.

Frank Hofmann informatikai fejlesztő, oktató és szerző, és inkább Berlinből, Genfből és Fokvárosból dolgozik. A Debian Csomagkezelő Könyv társszerzője a dpmb oldalon érhető el.org

Linkek és hivatkozások

A legjobb játékkonzol emulátorok Linuxhoz
Ez a cikk felsorolja a Linux számára elérhető népszerű játékkonzol-emulációs szoftvereket. Az emuláció egy szoftver-kompatibilitási réteg, amely játék...
A legjobb Linux-disztribútorok játékhoz 2021-ben
A Linux operációs rendszer hosszú utat tett meg eredeti, egyszerű, szerver alapú kinézetétől. Ez az operációs rendszer rendkívül javult az elmúlt évek...
Hogyan lehet rögzíteni és streamelni a játékmenetét Linuxon
Korábban a játékokat csak hobbinak tekintették, de az idő múlásával a játékipar hatalmas növekedést ért el a technológia és a játékosok száma szempont...