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.

  1. 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
  1. Naziv varijable mora opravdati upotrebu varijable u skripti.
  2. Toplo se preporuča korištenje istog naziva varijable u cijelom programu.
  3. 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.

  1. BASH—Puno ime Basha.
  2. BASH_ENV—U skripti ljuske, naziv datoteke profila koja je izvršena prije pokretanja skripte.
  3. BASH_VERSION—verzija Basha (na primjer, 2.04.0(1)-izdanje).
  4. STUPCI—Broj znakova po retku na vašem zaslonu (na primjer, 80).
  5. HOSTNAME—Ime računala. U nekim verzijama Linuxa to može biti naziv stroja. Na drugima to može biti potpuno kvalificirani naziv domene.
  6. HOSTTYPE—Vrsta računala.
  7. HOME—Naziv vašeg matičnog imenika.
  8. OSTYPE—Naziv operativnog sustava.
  9. PATH—Popis putova pretraživanja odvojen dvotočkom za pronalaženje naredbe za izvršenje.
  10. PPID—ID procesa nadređenog procesa ljuske.
  11. PROMPT_COMMAND—Naredba za izvršenje prije postavljanja primarnog niza upita PS1.
  12. PWD—trenutni radni direktorij (kao što je postavljeno naredbom cd).
  13. NALUČAJNO—Vraća nasumični broj između 0 i 32767 svaki put kada se referencira.
  14. LJUSKA—Ljuska koju preferirate; za programe koji umjesto vas pokreću ljusku.
  15. 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.