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.
- 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
- Ime varijable mora opravdati upotrebu varijable u skripti.
- Preporučuje se korištenje istog imena varijable u cijelom programu.
- 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.
- BASH—Puno ime putanje za Bash.
- BASH_ENV—U shell skripti, ime datoteke profila koja se izvršava prije pokretanja skripte.
- BASH_VERSION—Verzija Bash-a (na primjer, 2.04.0(1)-izdanje).
- COLUMNS—Broj znakova po redu na vašem ekranu (na primjer, 80).
- 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.
- HOSTTYPE—Tip računara.
- HOME—ime vašeg matičnog imenika.
- OSTYPE—Naziv operativnog sistema.
- PATH—Lista putanja za pretraživanje razdvojena dvotočkama za pronalaženje naredbe za izvršenje.
- PPID—ID procesa nadređenog procesa ljuske.
- PROMPT_COMMAND—Naredba za izvršenje prije postavljanja PS1 primarnog stringa upita.
- PWD—Trenutni radni direktorij (kako je postavljeno naredbom cd).
- RANDOM—Vraća nasumični broj između 0 i 32767 svaki put kada se referencira.
- SHELL – preferirana školjka za korištenje; za programe koji pokreću ljusku umjesto vas.
- 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.