Uvid u "varijable" Linuxa u skriptnom jeziku ljuske - 9. dio
Već smo napisali niz članaka o Linux Shell Scripting koji je bio toplo prihvaćen u to vrijeme i bio je vrlo relevantan čak i sada. Ovdje je poveznica na zbirku članaka o skriptiranju ljuske.
- Naučite Linux shell skriptiranje
Ovdje u ovom članku vidjet ćemo varijable, njihovo izvršenje i njihovu implementaciju u skripti ljuske.
Spremanje izlaza
Izlaz naredbe može se preusmjeriti na standardni izlaz ili datoteku te se također može pohraniti u varijablu. Ako je izlaz naredbe dovoljno velik da ne stane na ekran, preostaje nam samo opcija spremanja izlaza u datoteku u varijablu. Jedna od prednosti spremanja rezultata u varijablu je veća brzina pregleda. Varijable se spremaju u memoriju i stoga su brze u usporedbi s dohvaćanjem iz datoteke.
Varijable u skriptnom jeziku
Varijable su važna komponenta koja se koristi u Shell skriptiranju i deklariraju se pomoću bash naredbe “Deklara”. Da bismo deklarirali varijablu recimo 'razina', moramo izvršiti naredbu u nastavku.
declare LEVEL
Napomena: Moramo koristiti “typecast”, ugrađenu izjavu za kompatibilnost korn shell-a. 'Declare' je napredniji i sadrži sve značajke, stoga se preporučuje kada koristite BASH.
Pravila
- Naziv varijable mora opravdati upotrebu varijable u skripti.
- Toplo se preporuča korištenje istog naziva varijable u cijelom programu.
- Ime varijable može biti velikim i malim slovima, ali prema konvenciji naredbe ljuske su pisane malim slovima i stoga bismo trebali koristiti naziv varijable velikim slovima, kako bismo uklonili zabunu. npr. TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT, itd.
Provedba
Varijabli se može dodijeliti vrijednost pomoću znaka jednakosti (=). Da bismo varijabli dodijelili prazan niz, ne smijemo dati nikakvu vrijednost nakon znaka jednakosti.
LEVEL =
Provjerite vrijednost pohranjenu u varijabli 'LEVEL' kao.
printf "%i" $LEVEL
printf, naredba za koju je većina 'C' programera svjesna, ispisuje podatke. %i – Predstavlja cijeli broj. Možemo ga zamijeniti s %c za znak ili %c za niz, prema potrebi.
$LEVEL: Obratite pažnju na '$' koji radi kao zamjena vrijednosti za varijablu 'LEVEL'.
Uzorak izlaza
printf "%i" $LEVEL
0
Dodijelite vrijednost varijabli.
LEVEL=0
Provjerite pohranjene podatke u varijabli.
printf "%i" $LEVEL
0
NAPOMENA: Zanimljivo je primijetiti da u oba slučaja, kada nismo dodijelili vrijednost varijabli i kada smo dodijelili vrijednost '0<' u varijablu 'LEVEL' izlazi 0. Iako je izlaz isti u oba slučaja, ali skripta ljuske različito obrađuje obje deklaracije varijabli.
Dodijelite novu vrijednost varijabli.
LEVEL=121
Provjerite pohranjene podatke u varijabli.
printf "%i" $LEVEL
121
Poništavanje varijable
Declare je BASH naredba i stvara varijablu samo kada se izvrši. Tako stvorena varijabla ostaje u memoriji dok se skripta ne zaustavi ili dok se varijabla ne uništi.
unset LEVEL
Predefinirane varijable u BASH-u
BASH ima preko 50 unaprijed definiranih varijabli. Neke od ovih varijabli imaju posebno značenje pridruženo BASH-u, npr. varijabla RANDOM daje nasumični broj. Ako se ne postavi i zatim ponovno definira, izvorna vrijednost varijable se zauvijek gubi. Stoga se savjetuje da ne koristite nijednu sistemski definiranu varijablu.
Ovdje je popis nekih korisnih BASH varijabli.
- BASH—Puno ime Basha.
- BASH_ENV—U skripti ljuske, naziv datoteke profila koja je izvršena prije pokretanja skripte.
- BASH_VERSION—verzija Basha (na primjer, 2.04.0(1)-izdanje).
- STUPCI—Broj znakova po retku na vašem zaslonu (na primjer, 80).
- HOSTNAME—Ime računala. U nekim verzijama Linuxa to može biti naziv stroja. Na drugima to može biti potpuno kvalificirani naziv domene.
- HOSTTYPE—Vrsta računala.
- HOME—Naziv vašeg matičnog imenika.
- OSTYPE—Naziv operativnog sustava.
- PATH—Popis putova pretraživanja odvojen dvotočkom za pronalaženje naredbe za izvršenje.
- PPID—ID procesa nadređenog procesa ljuske.
- PROMPT_COMMAND—Naredba za izvršenje prije postavljanja primarnog niza upita PS1.
- PWD—trenutni radni direktorij (kao što je postavljeno naredbom cd).
- NALUČAJNO—Vraća nasumični broj između 0 i 32767 svaki put kada se referencira.
- LJUSKA—Ljuska koju preferirate; za programe koji umjesto vas pokreću ljusku.
- POJAM—vrsta emulacije terminala (na primjer, konzola).
Pravilo rastavljanja 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 pri korištenju citata?
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 točan. BASH uzima razmak nakon '0' kao završetak i stoga je vrijednost varijable postavljena kao '0'. Sada pokušavamo koristiti citate za varijable kao što je prikazano u nastavku.
LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
printf "%s" $LEVEL
0;1;2;3;4;5
Ipak rezultat nije točan. BASH je uzeo vrijednosti varijable i uklonio sve razmake između njih. Stoga printf nije protumačio 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! Rješenje je stavljanje zamjene varijable pod navodnike. Citati grupiraju znakove u ljusci i tumače posebne znakove na smislen način.
Navodnici se mogu koristiti uzastopce i dobra je ideja zamjene varijabli staviti u navodnike. Štoviš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.”
Odvajanje dijelova citiranog teksta razmakom rezultirat će istim problemom kao što je gore spomenuto. Bash će prazan prostor tretirati kao završetak. Drugi način supstitucije 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 u ispisivanju posebnih znakova.
printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”
Obrnuta kosa crta (/)
Obrnuta kosa crta funkcionira kao jednostruki navodnik za jedan znak. Jeste li razmišljali kako ćete tiskati (“)?
printf "%c" "\""
Kada se %q grupira s printf, daje kosu crtu iza 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. Našim čitateljima uvijek nastojimo pružiti članke koji su im korisni s vremena na vrijeme. Gore navedeni članak je opsežan stoga će ostatak tema s primjerima biti izrađen u sljedećem članku koji će uključivati "Atribute varijable", "Izvoz varijable" itd.
Do tada ostanite s nama i povezani na linux-console.net. Ne zaboravite nam dati svoje vrijedne povratne informacije u odjeljku za komentare u nastavku.