Ako vykonávať príkazy v skripte Shell

How Execute Commands From Within Shell Script



V bash môže byť spustenie príkazov zo skriptu shell spočiatku trochu zastrašujúce a môže vyžadovať skok vo viere. Koniec koncov, príkazy vykonávané v rámci bash skriptu nie sú interaktívne. Tu položíme základ na vykonávanie príkazov z prostredia skriptu Shell a odpovieme na nasledujúce otázky o príkazoch: Odkiaľ pochádzajú? Čo sú zač? Ako ich použijeme v skripte?

Odkiaľ pochádzajú príkazy?

Príkazy v bash pochádzajú z ktorejkoľvek z nasledujúcich kategórií:







Bash sám (pozri vstavané programy)

Bash je dodávaný s vlastnou sadou príkazov, ktoré umožňujú prístup k jeho vstavaným funkciám, ako je deklarácia polí, čítanie riadkov zo súboru a ďalšie funkcie integrované do bash. Hovoríme tomu príkazy tejto kategórie, vstavané príkazy bash alebo skrátene vstavané.



Spustiteľné súbory vo vašom prostredí (pozri externé príkazy)

V predvolenom nastavení bude bash štandardne dediť určité premenné. Toto je pozorované v prípade premennej PATH vrátane umiestnení pre spustiteľné súbory, ktoré sú v bash odkazované ako externé príkazy. To znamená, že ak zvinúť Príkaz je na vašej ceste, je možné ho vykonať z bash skriptu rovnakým spôsobom ako v interaktívnom režime. Hovoríme tomu príkazy tejto kategórie, externé príkazy alebo skrátene príkazy.



Užívateľom definovaná funkcia (pozri funkcie)

Pred spustením externých príkazov a vstavaných programov bash skontroluje, či je definovaná funkcia. Ak je, funkcia sa vykoná ako príkaz. Ak nie, postupuje sa podľa poradia priority príkazov. Aby bolo možné vykonávať funkcie definované mimo skriptu, musia byť deklarované s atribútom -x; v opačnom prípade môžu byť zahrnuté pomocou. Velenie. Príkazy tejto kategórie nazývame užívateľom definované funkcie alebo skrátene funkcie.





Čo sú to príkazy

Príkaz je akékoľvek slovo, ktoré sa má považovať za jeden bod vstupu programu v prostredí shellu. V prípade, že sa príkaz vykoná, samotný príkaz a voliteľné argumenty sa odovzdajú ako pozičné parametre $ {0}, $ {1}, $ {2}, ... Nulový pozičný parameter ($ {0}) označuje samotného príkazu a v kontexte sa nemení. To znamená, že na rozdiel od pozičných parametrov vo funkciách, $ {1}, $ {2}, ... ktoré sa môžu meniť v závislosti od kontextu, $ {0} sa medzi volaniami funkcií nemení.

Rozsah príkazov závisí od umiestnenia deklarácie a atribútov priradených ako globálne, vstavané do bash alebo lokálne do vášho bash programu.



Tu je zoznam typov príkazov, ktoré je potrebné poznať.

Vstavané príkazy

Jedná sa o prvotriednych občanov vesmíru bash, vrátane znakov ako ‘.’ ‘:‘ ‘[‘ ‘]‘ A vyhradených slov ako vyhlasovať v bash. Počítate s tým, že tieto príkazy, obsiahnuté v zozname vstavaných príkazov bash, budú k dispozícii na použitie vo vašom skriptu bash.

V závislosti od označenia a čísla verzie vášho tlmočníka bash nemusia byť niektoré príkazy k dispozícii.

Externé príkazy

Externé príkazy sú spustiteľné súbory prístupné mimo bash skript ako curl. Na rozdiel od funkcií nie sú externé príkazy uložené ako premenné.

Čím nižšia je priorita typu príkazu, tým neskôr môže byť príkaz interpretovaný. Externé príkazy majú najnižšie poradie v bash. To znamená, že pred spustením externého príkazu interpret bash vyhľadá funkcie, potom integrované moduly a nakoniec sa pokúsi zistiť, či príkaz existuje externe. Ak nie, mali by ste vidieť nasledujúcu chybu.

bash: neznámy-príkaz:príkaznenájdené

V skripte bash môžu funkcie prepísať správanie externých príkazov, ak zdieľajú rovnaký názov, aký sme už videli v príkladoch curl bash. Nasleduje príklad vlastného externého príkazu pomocou funkcie.

zvinúť() {
príkaz $ {FUNCNAME}...
}

Funguje to, pretože funkcie majú vyššiu prioritu ako externé príkazy a dokonca aj vstavané bash. Obmedzenie sú povolené znaky v názve funkcie.

Uvedomte si, že vyššie uvedený príklad môže byť dosiahnutý pomocou aliasu nasledovne.

prezývka zvinúť= '
{
zvinúť ...
}
'

V prípade aliasov sa typ príkazu môže líšiť v závislosti od kontextu pri vykonávaní, zatiaľ čo v prípade vlastných externých príkazov používajúcich funkčnú metódu je vstupným bodom vždy funkcia.

Funkcie

V bash vládnu funkcie. Predtým, ako sa pozriete na vstavané a externé príkazy, bash skontroluje, či je funkcia definovaná názvom kandidátskej funkcie, prvým slovom zobrazeným na riadku alebo za; znak označujúci koniec príkazového riadka. Jedinou výnimkou sú premenné bash napísané veľkými písmenami, ako napríklad $ {FUNCNAME}.

prezývka() { FUNCNAME= asdf;zahodil $ {@ ,,};}
prezývka zvinúť=„TEST CURL ALIAS“ #?

Jednoduché príkazy

Jednoduché príkazy sú na stránkach bash man definované ako slovo, za ktorým nasledujú voliteľné argumenty. V kontexte môže byť jednoduchý príkaz buď vstavaným, externým príkazom alebo funkciou.

Ako vykonávať príkazy z bash skriptu

Teraz, keď vieme, aké typy príkazov sú k dispozícii, môžeme sa zamerať na to, ako ich používať vo vašich skriptoch. Najprv budeme potrebovať vedieť, ako funguje prednosť príkazov v bash.

Tu je niekoľko spôsobov, ako ovládať prednosť v bash skripte.

Nech sa rozhodne bash

príkaz_názov

Väčšinou, hlavne na začiatku, necháme bash, aby sa rozhodol, ktorý príkaz použije. Existujú však prípady, keď váš zámer nemusí byť interpretovaný správcom bash správne. To je prípad, keď sa názvy funkcií a externé príkazy alebo vstavané prekrývajú.

Vykonajte externý príkaz

príkazpríkaz_názov

Predpokladajme, že existuje interný príkaz command_name, ktorý je k dispozícii v interaktívnom režime, a chcete ho použiť v skriptu bash. Pomocou príkazu builtin môžeme bash explicitne povedať, že príkaz_názov je externý príkaz.

Príklady externých príkazov

Príklady externých príkazov za predpokladu, že sú nainštalované nasledujúce:

súbor
choď
figovník
Príklad: Získajte typ súboru a informácie
{ # získajte typ súboru a informácie
súbor $ {infile} # (1,2)
}
# (1) príkaz, súbor
# (2) infile = {Cesta k súboru}
Príklad: Fáza úpravy a nových súborov v git
{ # fázových súborov v git
git pridať.# (1)
}
# (1) príkaz, git
Príklad: Vytvorte umenie ascii pomocou figovníka
{ # vytvorte ascii umenie
figovník$ {message} # (1,2)
}
# (1) príkaz, obr
# (2) message = {Správa na zobrazenie ako umenie ascii}

Vykonajte vstavaný príkaz

vstavanýpríkaz_názov

Predpokladajme, že príkaz_názov je jedným z príkazov definovaných ako vstavaný v bash. Aby bash vedel, že chceme spustiť príkaz_názov ako vstavaný, použijeme vstavaný vstavaný.

Vstavané príklady príkazov
Príklad: koľko vstavaných?
vstavaný{,}{,,}{,,,} # koľko vstavaných?
Príklad: Fantóm vyhlásiť
{
vyhlásiť() { zahodilojoj!;}
vyhlásiť–Xfvyhlásiť #?
}

Záver

Vykonanie príkazu pomocou skriptu bash shell je pomerne jednoduché. Existujú tri hlavné typy príkazov. Vedieť, ako sa v bash interpretujú jednoduché príkazy, môže viesť k lepšej kontrole toho, aký typ príkazu sa vykonáva za behu.