Weboldal keresés

A „Linux-változók” megértése és írása a Shell Scriptingben – 10. rész


A Linux shell szkriptnyelv mindig is forró téma volt és a jövőben is az lesz. A Shell Scripting Language varázslatos, és olyan egyszerű a programozása szkriptnyelven, mint bármely más nyelven. Ehhez azonban mélyreható ismerete szükséges, hogy mit csinálunk, és milyen eredmény várható.

Valamennyi shell scripting cikket, amelyet olvasóinknak írtunk, nagyra értékeljük, beleértve az utolsót is, „An Insight of Linux Variables”. Az utolsó cikket új szintre terjesztjük ki.

Változó attribútumok

A Linux-környezet minden változója rendelkezik bizonyos beállításokkal, és ezeket „attribútumoknak” nevezik. Ezeket a beállításokat vagy attribútumokat a helyzettől függően Be és Ki lehet kapcsolni a „declare” paranccsal.

Példa a változó attribútumára egy „-i” kapcsoló használata, amely bekapcsolja az egész attribútumot a megfelelő változóhoz. Még ha nem numerikus értéket ad is át a „-i” kapcsolóhoz, az nem ad hibaüzenetet, és a „0” értéket egész számként értelmezi. Itt az alábbi példából még egyértelműbbé válik.

Deklaráljunk egy egész szám változót, bill=121

avi@localhost:~$ declare -i bill=121

Nyomtassa ki a változó számla értékét.

avi@localhost:~$ printf "%d\n" "$bill" 

121

Legyen a változó értéke egy karakterlánc. A változó számla már bejelentett, nem kell másodszor bejelenteni. Csak módosítsa az as változó értékét.

avi@localhost:~$ bill=tecmint

Most ismét printf a változó bill értékét.

avi@localhost:~$ printf "%d\n" "$bill" 

0

Megjegyzés: „0” a hibaüzenet helyén.

A kérdés most az, hogy hogyan ismerhetjük meg a már deklarált változók attribútumait?
avi@localhost:~$ declare -p bill 

declare -i bill="121"

Itt egy -p (a nyomtatást jelenti) kapcsoló segít megmenteni.

Még egyszer, mit kell tennem, hogy kikapcsoljam egy változó attribútumait?

Egy változó attribútumainak Ki kikapcsolásához mindössze egy + (plusz) jelre van szükségünk közvetlenül a váltás előtt. Itt az alábbi példából világosabban látszik.

Kapcsolja Ki az integer attribútumot a fenti változóhoz.

avi@localhost:~$ declare +i bill

Ellenőrizze a változó értékét.

avi@localhost:~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

Most nyomtassa ki a változó értékét a switch string segítségével.

avi@localhost:~$ printf "%s\n" "$bill" 

tecmint

Itt a fenti példában a bash nem tudta hibának ítélni a nem numerikus értéket, azonban a printf értelmezi, hogy mi lehet szám és mi nem.

Csak olvasható változók

Lehet, hogy hallott már a Csak olvasható memóriáról (ROM), de mi az a csak olvasható változó? Van valami hasonlóság a ROM-mal?

Nos, az írásvédett változók, mint például a csak olvasható memória, olyan dolgok, amelyek értékét nem lehet megváltoztatni, miután hozzárendelték. Ezért ezt csak olvashatónak nevezik. Nem írhat, szerkeszthet vagy módosíthat új értéket ehhez a változóhoz. Íme egy példa egy illusztráció.

Dekalírozzon egy csak olvasható (-r) változónevet, amelynek értéke „linux-console.net ”.

avi@localhost:~$ declare -r name="linux-console.net"

Nyomtassa ki a fent deklarált változó értékét.

avi@localhost:~$ printf "%s\n" "$name" 

linux-console.net

Próbáld meg megváltoztatni a változó értékét.

avi@localhost:~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

Mint fentebb tárgyaltuk, az írásvédett változó attribútumait a „+” jellel lehet megváltoztatni.

Változók exportálása Linuxban

A parancsfájlban deklarált összes shell-változó elérhető a szkript futásáig. A szkripten kívül a szkriptből származó változó nem létezik. A változók szkripten kívüli elérhetővé tételének folyamatát változók exportálásának nevezzük.

A változó a shell-en kívülre exportálható a declare -x (export) kapcsolóval, amely nyugtázza a shell-ben, hogy mit akart exportálni. A deklarációs export kapcsoló használható.

avi@localhost:~$ declare -x variable=”Constant_Value”

A szkript futása közben a változón végrehajtott összes módosítás elveszik, ha a változót a szkripten kívülre exportálják. A változó exportálása nagyon fontos a shell szkriptekben.

Szeretnénk egy olyan változót, amely csak olvasható és elérhető a szkripten kívül, egyszerre kell használnunk a -r és a -x kapcsolót.

avi@localhost:~$ declare -rx variable=”Constant_Value”

Környezeti változók

A program és az azokat végrehajtó program között megosztott változók. A környezeti változók exportálhatók, de az attribútumok nem rendelhetők hozzá.

A fenti elmélet gyakorlati megértése. Itt van két szkriptünk: 0.sh és 1.sh.

0.sh
#!/bin/bash 
declare -rx name=Tecmint 
bash 0.sh 
exit 0

A második forgatókönyv pedig az.

1.sh
#!/bin/bash 
printf "%s\n" "$name" 
name=linux-console.net 
printf "%s\n" "$name"
exit 0

Itt az történik, hogy egy változó (név) csak olvashatónak van deklarálva, és exportálva van, és közvetlenül a második szkript meghívása után.

A második szkript éppen az első printf utasításban exportált első szkriptből nyomtatta ki a változót. A második printf utasításban a ’name’ változóhoz rendelt új értéket mutatja.

Nem kell aggódni, hogy a változó csak olvasható volt, hogyan lehet újra hozzárendelni. Nem emlékszel, hogy „A szkript futása közben a változón végrehajtott összes módosítás elveszik, amikor a változót a szkripten kívülre exportálják. ”

Hivatkozások

A declare parancs engedélyezi az összes alábbi kapcsolót, azok kombinációjával együtt.

  1. -a : Egy tömböt deklarál.
  2. -f: Megjelenítési funkció és definíció.
  3. -F : Funkciónév megjelenítése.
  4. -r : A változó írásvédettként való deklarálása.
  5. -x : Változó deklarálása exportálhatóként.
  6. -I : A változó egész számként történő deklarálása.

Ez minden most. A következő cikkben megvitatjuk a változók „eval” paranccsal történő helyettesítésének módjait, valamint a témakör bezárása előtt a bash-ban már definiált változókat. Remélem, ti, emberek, élvezitek a forgatókönyvírás elmélyültségéhez vezető utat. Addig is maradjon velünk, és csatlakozzon a linux-console.net webhelyhez.