Weboldal keresés

Betekintés a Linux "változóiba" a Shell Scripting nyelvben – 9. rész


Már írtunk egy cikksorozatot a Linux Shell Scriptingről, amelyet akkoriban meleg fogadtatásban részesítettek, és még most is nagyon releváns volt. Itt található a shell scriptingről szóló cikkgyűjtemény linkje.

  1. Ismerje meg a Linux Shell Scriptinget

Ebben a cikkben látni fogjuk a változókat, azok végrehajtását és végrehajtását shell szkriptben.

Kimenet mentése

A parancs kimenete átirányítható szabványos kimenetre vagy fájlba, és tárolható változóban is. Ha egy parancs kimenete elég nagy ahhoz, hogy ne férjen el a képernyőn, akkor csak a kimenetet egy változóban lévő fájlba menthetjük. A kimenet változóba mentésének egyik előnye a gyorsabb vizsgálati sebesség. A változókat a rendszer a memóriába menti, és ezért általában gyorsabb a fájlból való visszakereséshez képest.

Változók a szkriptnyelvben

A változók a Shell-szkriptek fontos összetevői, és a bash paranccsal deklarálják a „Deklarálás” parancsot. A „level” változó deklarálásához végre kell hajtanunk az alábbi parancsot.

declare LEVEL

Megjegyzés: A „typecast”-ot kell használnunk, amely egy beépített utasítás a korn shell-kompatibilitáshoz. A „declare” fejlettebb, és minden funkciót tartalmaz, ezért a BASH használatakor ajánlott.

Szabályok
  1. A változónévnek indokolnia kell a változó használatát a szkriptben.
  2. Erősen ajánlott ugyanazt a változónevet használni a programban.
  3. A változók neve lehet nagybetűs és kisbetűs is, de a konvenció szerint a shell parancsok kisbetűsek, ezért a változók nevét nagybetűvel kell használnunk, hogy elkerüljük a félreértést. pl. TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT stb.

Végrehajtás

Egy változóhoz egyenlőségjellel (=) lehet értéket rendelni. Ahhoz, hogy egy változóhoz üres karakterláncot rendeljünk, nem szabad értéket megadnunk az egyenlőségjel után.

LEVEL =

Ellenőrizze a „LEVEL” változóban tárolt értéket, mint.

printf "%i" $LEVEL

A printf, a legtöbb 'C' programozó ismeri parancsa adatokat nyomtat. %i – Egész számot jelöl. Szükség szerint helyettesíthetjük a %c karakterrel, vagy a %c karakterlánccal.

$LEVEL: Vegye figyelembe a '$'-t, amely a 'LEVEL' változó értékhelyettesítőjeként működik.

Minta kimenet
printf "%i" $LEVEL
0

Rendeljen értéket a változóhoz.

LEVEL=0

Ellenőrizze a tárolt adatokat változóban.

printf "%i" $LEVEL
0

MEGJEGYZÉS: Érdekes megjegyezni, hogy mindkét esetben, amikor nem adtunk hozzá értéket a változóhoz, és amikor a '0< értéket adtuk" a "LEVEL" változóhoz 0 kimenetet ad. Bár a kimenet mindkét esetben ugyanaz, de a shell script mindkét változó deklarációt eltérően kezeli.

Rendeljen új értéket a változóhoz.

LEVEL=121

Ellenőrizze a tárolt adatokat változóban.

printf "%i" $LEVEL
121

Változó kikapcsolása

A Declare egy BASH parancs, és csak akkor hoz létre változót, ha végrehajtják. Az így létrehozott változó addig marad a memóriában, amíg a szkript le nem áll, vagy a változó megsemmisül.

unset LEVEL

Előre definiált változók a BASH-ban

A BASH több mint 50 előre definiált változót tartalmaz. E változók némelyike különleges jelentéssel rendelkezik a BASH-hoz, például egy RANDOM változó véletlen számot ad ki. Ha hatástalanítja, majd újra definiálja, az eredeti változó értéke örökre elveszik. Ezért nem tanácsos semmilyen rendszer által meghatározott változót használni.

Itt található néhány hasznos BASH-változó lista.

  1. BASH – A Bash teljes elérési útja.
  2. BASH_ENV – Shell-szkriptben a parancsfájl indítása előtt végrehajtott profilfájl neve.
  3. BASH_VERSION – A Bash verziója (például 2.04.0(1)-release).
  4. OSZLOPOK – A karakterek száma soronként a kijelzőn (például 80).
  5. HOSTNAME – A számítógép neve. A Linux egyes verzióiban ez lehet a gép neve. Más esetekben ez lehet teljesen minősített domain név.
  6. HOSTTYPE – A számítógép típusa.
  7. HOME – A kezdőkönyvtár neve.
  8. OSTYPE – Az operációs rendszer neve.
  9. PATH – A keresési útvonalak kettősponttal elválasztott listája a végrehajtandó parancs megtalálásához.
  10. PPID – A shell szülőfolyamatának folyamatazonosítója.
  11. PROMPT_COMMAND – A PS1 elsődleges parancssorának beállítása előtt végrehajtandó parancs.
  12. PWD – Az aktuális munkakönyvtár (a cd parancs által beállított).
  13. VÉLETLENSZERŰ – 0 és 32767 közötti véletlen számot ad vissza minden alkalommal, amikor hivatkoznak rá.
  14. SHELL – Az előnyben részesített héj; olyan programokhoz, amelyek shellt indítanak el neked.
  15. TERM – A terminál emuláció típusa (például konzol).

A szófelosztás szabálya.

LEVEL=0
printf "%i" $LEVEL
0

AND

LEVEL=”0”
printf "%i" $LEVEL
0

Mindkét esetben a kimenet ugyanaz marad. Tehát mi a különbség az eredményben az idézet használata közben?

Ellenőrizzük ugyanazt különböző változó adatokkal.

LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5
bash: 1: command not found 
bash: 2: command not found 
bash: 3: command not found 
bash: 4: command not found 
bash: 5: command not found
printf "%i" $LEVEL
0

Arról nem is beszélve, hogy a kimenet nem megfelelő. A BASH a „0” utáni szóközt veszi fel lezárásként, ezért a változó értéke „0” lesz. Most megpróbáljuk idézetet használni a változókhoz az alábbiak szerint.

LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
printf "%s" $LEVEL 
0;1;2;3;4;5

Ennek ellenére az eredmény nem megfelelő. A BASH felvette a változó értékeket, és eltávolított minden szóközt köztük. Ezért a printf nem értelmezte a 0,1,2,3,4,5-öt különálló értékként. Tehát mi a megoldás?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

Igen! A megoldás a Változó helyettesítését idézőjelek közé téve. Az idézetek héjban csoportosítják a karaktereket, és értelmes módon értelmezik a speciális karaktereket.

Az idézetek egymás után használhatók, és célszerű a változók behelyettesítését idézőjelek közé tenni. Ezenkívül használható a teljes szöveg és az idézetek elválasztására. Íme egy példa.

LEVEL=5 
FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

Az idézett szövegrészek szóközzel történő elválasztása ugyanazt a problémát eredményezi, mint a fentebb tárgyalt. A bash a szóközt lezárásként kezeli. A változók helyettesítésének másik módja az.

LEVEL=5

FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

Az egyszeres idézőjelek korlátozzák a BASH speciális karakterek nyomtatását.

printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

A fordított perjel (/)

A fordított perjel úgy működik, mint egy karakter egyetlen idézőjel. Gondolt már arra, hogyan fog nyomtatni ()?

printf "%c" "\""

Ha a %q printf-el van csoportosítva, minden szó után fordított perjelet ír elő a szóköz biztosítása érdekében.

LEVEL=5

FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

Ez minden most. Mindig igyekszünk olvasóinkat hébe-hóba eljuttatni a számukra hasznos cikkekkel. A fent tárgyalt cikk hatalmas, ezért a többi témakör példákkal a következő cikkben kerül bemutatásra, amely tartalmazza a „Változó attribútumai”, „Változó exportálása” stb.

Addig is maradjon velünk, és csatlakozzon a linux-console.net webhelyhez. Ne felejtse el megadni nekünk értékes visszajelzését az alábbi megjegyzés részben.