Skriptové jazyky (1. časť)

Na vybraných príkladoch táto prednáška ukazuje, aké rozsiahle sú možnosti shell programov v systéme Linux. Táto prvá časť predovšetkým podrobne popisuje regulárne výrazy a poskytuje prehľad mnohých malých nástrojov, ktoré za vás môžu vykonať toľko práce.

bezprostredne pred

Prehľad

Nasledujúci prehľad zobrazuje všetky dôležité metaznaky, ktoré je možné použiť v regulárnych výrazoch.

. Stojany pre každú postavu. * Znamená ľubovoľný počet výskytov postavy bezprostredne pred ňou. [. ] Označuje jeden zo znakov uvedených v hranatých zátvorkách. \ < n, m \>Označuje opakovaný výskyt jedného znaku bezprostredne pred ním. ^ Predpokladá, že je splnená nasledujúca logická podmienka na začiatku riadku. $ Predpokladá, že je splnená nasledujúca logická podmienka na konci riadku. \ Špeciálny význam nasledujúceho znaku je zrušený. \ (\) Prenesie vzor uzavretý medzi \ (a \) do špeciálnej medzipamäte. Týmto spôsobom je možné uložiť až deväť vzorov do jedného riadku. \ n Znamená n-tý vzor, ​​ktorý bol predtým uložený pomocou \ (a \).

Účinok jednotlivých metaznakov by sa mal trochu objasniť na nasledujúcich jednoduchých príkladoch.

Aritmetika

Bash umožňuje aritmetické výpočty. Výraz v $ [. ] sa hodnotí podľa obvyklých pravidiel. Okrem celočíselných základných aritmetických operácií je podporovaná celá škála bitových a logických operácií.

Nasledujúci skript shellu očakáva číslo ako parameter. Počíta sa od 1 do tohto čísla, pričom číslo sa vydáva každú sekundu.

Výstup programov

Výstup programov možno ľahko použiť v shellovom skripte. To medzi `. `V tomto okamihu sa vykoná uzavretý príkaz a jeho výstup je možné použi v skripte.

Nasledujúci príklad číta v sérii súborov Postscript, koľko stránok obsahujú, a sčíta všetky stránky.

Presmerovanie súboru

Bash ponúka rôzne možnosti na presmerovanie výstupu programov. Mali by sa predstaviť dve obzvlášť zaujímavé možnosti.

1. Zlúčte stdout a stderr

Mnoho programov zapisuje svoje výstupy na štandardný výstup a štandardný výstup. Ak majú byť oba streamy smerované do jedného súboru, postupujte takto:

Výraz znamená, že výstup zo stderr je presmerovaný na stdout, ktorý je zase výstupom do súboru file_out.

2. číslo na stderr

Niekedy existuje túžba zapísať výstup na stderr zo skriptu, aby sa oddelil výstup shell skriptu. Pri echu a presmerovaní súboru je to možné nasledovne:

Výstupy sa zobrazia na stderr .

Tu dokumenty

Pomocou príkazu echo a presmerovania súboru je možné vytvoriť nový súbor z shell skriptu:

Ak sa má do súboru nepretržite zapisovať niekoľko riadkov, môže sa namiesto niekoľkých riadkov ozveny použiť nasledujúce riešenie:

Oddeľovač vstupu

Nasledujúci problém: V shellovom skripte by sa mal textový súbor čítať pole po poli, polia by mali byť oddelené tabulátormi. Zvyčajne doručte nasledujúce riadky

súbor slovo po slove.

Na oddelenie riadku do jednotlivých slov používa Bash internú premennú IFS, ktorá obsahuje všetky možné oddeľovače. Štandardne je tu nastavený IFS =.

Vyššie uvedený problém je teraz vyriešený nasledujúcimi riadkami:

Hovoriace hodiny

O niečo rozsiahlejším príkladom programovania shellu sú hovoriace hodiny. Skirpt v podstate ovláda tri rôzne typy hodín: hovoriace hodiny, kostolné hodiny a kukučkové hodiny. U prvých dvoch sa čas zobrazuje každú štvrťhodinu oznámením času pomocou hotových zvukových súborov alebo príslušným hodinovým úderom. Kukučkové hodiny ukazujú počet hodín každú celú hodinu.

Najjednoduchší spôsob vyvolania hodín je cez crontab. Na používanie hodín sú tiež potrebné nasledujúce zvukové súbory.

Nasledujúci prehľad predstavuje množstvo viac alebo menej výkonných programov, ktoré môžu byť rôzne použité pri písaní shell skriptov.