Linux E X P R E S

Facebook

Elvish shell (3): Deklarácia premenných

elvish.png

Zoznámte sa s premennými a vyskúšajte si prácu s nimi v Elvish shell. Naučte sa deklarovať nielen jednu premennú, ale viacero premenných len v jednom príkazovom riadku.


Premenné

Majme predpoveď počasia na tri dni. Dáme ju celú do citácie textu. Príkaz echo nám vypíše text, s čím sme sa dôverne zoznámili v predošlom článku.

~> echo "Dnes je na Slovensku priemerna teplota 25°C.\nZajtra ma byt na Slovensku priemerna teplota 24°C.\nPozajtra ma byt na Slovensku priemerna teplota 25°C."


Vypisujeme predpoveď počasia cez príkaz echo

Všimnite si, že v texte máme dve rovnaké číselné hodnoty. Nebolo by efektívnejšie rovnakú hodnotu uložiť do premennej a využívať ju všade tam, kde to je potrebné?

~> teplota=25
~> echo "Dnes je na Slovensku priemerna teplota "$teplota"°C.\nZajtra ma byt na Slovensku priemerna teplota 24°C.\nPozajtra ma byt na Slovensku priemerna teplota "$teplota"°C."


Prvé využitie premenných

V prvom príkazovom riadku sme priradili premennej nazvanej ako teplota celočíselnú hodnotu 25. Tento proces priradenia môžeme tiež nazvať ako deklarácia premennej. Priradenie hodnoty premennej resp. deklarácia premennej je len prvý krok k využitiu výhod premenných. Druhým krokom je už konkrétne využitie cez odkazovanie. Používa sa nato znak $ pred menom premennej. Práve vďaka tomuto znaku môžeme premennú jednoducho použiť prakticky kdekoľvek.

No fajn, ale čo keby sme dali odkazovanie premennej v citácii textu?

~> teplota=25
~> echo "Dnes je na Slovensku priemerna teplota $teplota°C.\nZajtra ma byt na Slovensku priemerna teplota 24°C.\nPozajtra ma byt na Slovensku priemerna teplota $teplota°C."


Odkazovanie premenných v citácii textu

Ako môžete vidieť, odkazovanie v citácii textu nefunguje a to z toho dôvodu, že v citácii textu je interpretácia presná znak po znaku. Preto môžeme v citácii textu využívať rôzne zástupné znaky alebo medzery, koľko len chceme bez toho, aby to vyvolalo nejakú chybovú hlášku.

Vráťme sa ku priradeniu hodnoty premennej resp. deklarácii premennej. Čo ak by sme tento krok vynechali? Je vôbec deklarácia premennej potrebná ako prvý krok k využitiu premennej?

~> echo "Dnes je na Slovensku priemerna teplota "$teplota"°C.\nZajtra ma byt na Slovensku priemerna teplota 24°C.\nPozajtra ma byt na Slovensku priemerna teplota "$teplota"°C."


Využitie premennej bez priradenia hodnoty

Objaví sa chybová hláška oznamujúca nenájdenie premennej $teplota. Čiže prvý krok v podobe priradenia hodnoty premennej resp. deklarácie premennej je potrebný pre úspešné využitie premennej kdekoľvek v kóde.

Doteraz sme pracovali len s jedným typom premennej, celým číslom. Skúsme použiť miesto celého čísla desatinné číslo.

~> teplota=25.27
~> echo "Dnes je na Slovensku priemerna teplota "$teplota"°C.\nZajtra ma byt na Slovensku priemerna teplota 24°C.\nPozajtra ma byt na Slovensku priemerna teplota "$teplota"°C."


Priradíme premennej desatinné číslo

Hodnota priradenia pre premennú nemusí byť len číselná, ale aj citácia textu sa dá využiť.

~> teplota="25°C"
~> echo "Dnes je na Slovensku priemerna teplota "$teplota".\nZajtra ma byt na Slovensku priemerna teplota 24°C.\nPozajtra ma byt na Slovensku priemerna teplota "$teplota"."


Priradíme premennej citáciu textu

Ako poslednú vec pre tento diel si ukážeme viacnásobnú deklaráciu premenných. Deklaráciu jednej premennej sme si poriadne precvičili. Deklarovanie dvoch alebo troch premenných naraz nie je žiadna zložitá veda.

~> teplota1 teplota2 = 25 24
~> echo "Dnes je na Slovensku priemerna teplota "$teplota1"°C.\nZajtra ma byt na Slovensku priemerna teplota "$teplota2"°C.\nPozajtra ma byt na Slovensku priemerna teplota "$teplota1"°C."


Deklarácia dvoch premenných

Ale pozor, pri deklarácii môžete urobiť chybu.

~> teplota1 teplota2=25 24


Chybná deklarácia dvoch premenných

Medzi znakom „=“ a premennými a aj medzi samotnými premennými navzájom musí byť aspoň jedna medzera, aby deklarácia viacerých premenných prebehla v poriadku.

Námet na tento článok poslúžil tento zdroj: elv.sh

Diskuze (0) Nahoru