Uvid u Linux "varijable" u Shell Scripting jeziku - 9. dio


Već smo napisali seriju članaka o Linux Shell Scriptingu koji je tada bio toplo dobrodošao i bio je veoma relevantan čak i sada. Evo veze do zbirke članaka o shell skriptovima.

  1. Naučite Linux Shell Scripting

Ovdje u ovom članku ćemo vidjeti varijable, njihovo izvršenje i implementaciju u shell skriptu.

Čuvanje izlaza

Izlaz naredbe se može preusmjeriti na standardni izlaz ili datoteku i također se može pohraniti u varijablu. Ako je izlaz naredbe dovoljno velik da se ne uklapa u ekran, ostaje nam samo opcija spremanja izlaza u datoteku u varijablu. Jedna od prednosti čuvanja izlaza u varijablu je veća brzina ispitivanja. Varijable se spremaju u memoriju i stoga ima tendenciju da bude brzo u poređenju sa preuzimanjem iz datoteke.

Varijable u jeziku skriptiranja

Varijable su važna komponenta koja se koristi u shell skriptiranju i deklariraju se pomoću bash komande “Declare”. Da bismo deklarirali varijablu recimo 'nivo', moramo izvršiti donju naredbu.

declare LEVEL

Napomena: Moramo koristiti “typecast”, ugrađenu izjavu za kompatibilnost korn shell-a. 'declare' je napredniji i sadrži sve funkcije, stoga se preporučuje kada koristite BASH.

Pravila
  1. Ime varijable mora opravdati upotrebu varijable u skripti.
  2. Preporučuje se korištenje istog imena varijable u cijelom programu.
  3. Ime varijabli može biti velikim i malim slovima, ali po konvenciji su komande ljuske napisane malim slovima i stoga trebamo koristiti ime varijabli velikim slovima, kako bismo uklonili svaku zabunu. npr. TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT, itd.

Implementacija

Varijabli se može dodijeliti vrijednost pomoću znaka jednakosti (=). Da bismo dodijelili prazan niz varijabli, ne smijemo dati nikakvu vrijednost nakon znaka jednakosti.

LEVEL =

Provjerite vrijednost pohranjenu u varijablu 'LEVEL' kao.

printf "%i" $LEVEL

printf, naredba koju većina 'C' programera zna, ispisuje podatke. %i – Predstavlja cijeli broj. Možemo ga zamijeniti sa %c za znak ili %c za string, po potrebi.

$LEVEL: Obratite pažnju na '$' koji radi kao zamjena vrijednosti za varijablu 'LEVEL'.

Sample Output
printf "%i" $LEVEL
0

Dodijelite vrijednost varijabli.

LEVEL=0

Provjerite pohranjene podatke u varijabli.

printf "%i" $LEVEL
0

NAPOMENA: Zanimljivo je napomenuti da u oba slučaja, kada nismo dodijelili vrijednost varijabli i kada smo dodijelili vrijednost '0<' na varijablu 'LEVEL' daje 0. Iako je izlaz isti u oba slučaja, shell skripta različito obrađuje obje deklaracije varijable.

Dodijelite novu vrijednost varijabli.

LEVEL=121

Provjerite pohranjene podatke u varijabli.

printf "%i" $LEVEL
121

Poništi promjenjivu

Declare je BASH naredba i stvara varijablu samo kada se izvrši. Tako kreirana varijabla ostaje u memoriji sve dok se skripta ne zaustavi ili se varijabla ne uništi.

unset LEVEL

Predefinirane varijable u BASH-u

BASH ima preko 50 predefiniranih varijabli. Neke od ovih varijabli imaju posebno značenje pridato BASH-u, npr. varijabla RANDOM daje slučajni broj. Ako se ne postavi, a zatim ponovo definira, originalna vrijednost varijable se zauvijek gubi. Stoga se savjetuje da se ne koristi nijedna sistemski definirana varijabla.

Evo liste nekih korisnih BASH varijabli.

  1. BASH—Puno ime putanje za Bash.
  2. BASH_ENV—U shell skripti, ime datoteke profila koja se izvršava prije pokretanja skripte.
  3. BASH_VERSION—Verzija Bash-a (na primjer, 2.04.0(1)-izdanje).
  4. COLUMNS—Broj znakova po redu na vašem ekranu (na primjer, 80).
  5. HOSTNAME—ime računara. U nekim verzijama Linuxa, ovo može biti ime mašine. Na drugima, to može biti potpuno kvalificirano ime domene.
  6. HOSTTYPE—Tip računara.
  7. HOME—ime vašeg matičnog imenika.
  8. OSTYPE—Naziv operativnog sistema.
  9. PATH—Lista putanja za pretraživanje razdvojena dvotočkama za pronalaženje naredbe za izvršenje.
  10. PPID—ID procesa nadređenog procesa ljuske.
  11. PROMPT_COMMAND—Naredba za izvršenje prije postavljanja PS1 primarnog stringa upita.
  12. PWD—Trenutni radni direktorij (kako je postavljeno naredbom cd).
  13. RANDOM—Vraća nasumični broj između 0 i 32767 svaki put kada se referencira.
  14. SHELL – preferirana školjka za korištenje; za programe koji pokreću ljusku umjesto vas.
  15. TERM—Tip emulacije terminala (na primjer, konzola).

Pravilo dijeljenja riječi.

LEVEL=0
printf "%i" $LEVEL
0

AND

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

U oba slučaja izlaz ostaje isti. Dakle, koja je razlika u rezultatu dok se koristi citat?

Provjerimo isto s različitim varijabilnim podacima.

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

Da ne spominjem, izlaz nije ispravan. BASH uzima prostor iza '0' kao završetak i stoga je vrijednost varijable postavljena na '0'. Sada pokušavamo koristiti kotiranje za varijable kao što je dolje.

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

Rezultat ipak nije tačan. BASH je uzeo vrijednosti varijabli i uklonio sve razmake između njih. Stoga printf nije interpretirao 0,1,2,3,4,5 kao različite vrijednosti. Dakle, koje je rješenje?

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

Da! Stavljanje zamjene varijable pod navodnike je rješenje. Citati grupišu znakove u ljusci i tumače posebne znakove na smislen način.

Citati se mogu koristiti jedan uz drugi i dobra je ideja priložiti zamjene varijabli navodnicima. Štaviše, može se koristiti za odvajanje cjelokupnog teksta od citata. Evo primjera.

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

Razdvajanje komada citiranog teksta razmakom će rezultirati istim problemom kao što je gore opisano. Bash će tretirati bijeli prostor kao završetak. Drugi način zamjene varijable je.

LEVEL=5

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

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

Jednostruki navodnici ograničavaju BASH da štampa posebne znakove.

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

obrnuta kosa crta (/)

Obratna kosa crta radi kao pojedinačni navodnik za jedan znak. Jeste li razmišljali kako ćete štampati ()?

printf "%c" "\""

Kada je %q grupiran sa printf, daje obrnutu kosu crtu nakon svake riječi kako bi se osigurao razmak između riječi.

LEVEL=5

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

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

To je sve za sada. Uvijek se trudimo da našim čitateljima s vremena na vrijeme pružimo članke koji su im korisni. Gore obuhvaćeni članak je opsežan, stoga će ostatak tema s primjerima biti objavljen u sljedećem članku koji će uključivati „Atribute varijable“, „Izvoz varijable“ itd.

Do tada Pratite nas i povežite se na linux-console.net. Ne zaboravite nam dati svoje vrijedne povratne informacije u odjeljku za komentare ispod.