Kako izvajati ukaze iz skripta lupine

How Execute Commands From Within Shell Script



V bashu je lahko izvajanje ukazov iz skripta lupine sprva nekoliko zastrašujoče in lahko zahteva preskok vere. Navsezadnje ukazi, izvedeni v bash skriptu, niso interaktivni. Tu bomo postavili temelje za izvajanje ukazov iz skripta lupine in odgovorili na naslednja vprašanja o ukazih: Od kod prihajajo? Kaj so oni? Kako jih uporabljamo v scenariju?

Od kod prihajajo ukazi?

Ukazi v bashu prihajajo iz katere koli od naslednjih kategorij:







Bash sam (glej vgrajeno)

Bash ima svoj nabor ukazov, ki omogočajo dostop do vgrajenih funkcij, kot so razglasitev nizov, branje vrstic iz datoteke in druge funkcije, vgrajene v bash. Imenujemo ukaze te kategorije, bash vgrajene ukaze ali na kratko vgrajene.



Izvedljive datoteke v vašem okolju (glejte zunanje ukaze)

Privzeto bo bash privzeto podedoval nekatere spremenljivke. To opazimo v primeru spremenljivke PATH, vključno z lokacijami za izvedljive datoteke, ki so v bash navedene kot zunanji ukazi. Se pravi, če je curl ukaz je na vaši poti, lahko se izvede iz bash skripta na enak način kot v interaktivnem načinu. Imenujemo ukaze te kategorije, zunanje ukaze ali na kratko ukaze.



Uporabniško določena funkcija (glejte funkcije)

Pred izvajanjem zunanjih ukazov in vgrajenih elementov bash preveri, ali je funkcija definirana. Če je, se funkcija izvede kot ukaz. Če ne, nadaljuje po vrstnem redu ukazov. Za izvedbo funkcije, definirane zunaj skripta, jih je treba razglasiti z atributom -x; sicer jih lahko vključite z uporabo. Ukaz. Ukaze te kategorije uporabniško definirane funkcije ali funkcije na kratko imenujemo.





Kaj so ukazi

Ukaz je katera koli beseda, ki jo je treba obravnavati kot eno samo vstopno točko programa v okolju lupine. V primeru, da je ukaz izveden, se sam ukaz in izbirni argumenti posredujejo kot pozicijski parametri, $ {0}, $ {1}, $ {2},… Ničelni pozicijski parameter ($ {0}) označuje sam ukaz in je v kontekstu nespremenjen. To pomeni, da se za razliko od pozicijskih parametrov v funkcijah $ {1}, $ {2},… ki se lahko spremenijo glede na kontekst, $ {0} med klici funkcije ni spremenjen.

Obseg ukazov je odvisen od lokacije deklaracije in atributov, dodeljenih kot globalni, vgrajeni v bash ali lokalni v vašem bash programu.



Tu je seznam vrst ukazov, ki jih morate poznati.

Vgrajeni ukazi

To so prvorazredni državljani vesolja bash, vključno z znaki, kot je '.' ':' '[' ']' In rezerviranimi besedami, kot je deklarirati v bash. Računate, da bodo ti ukazi, vsebovani na seznamu vgrajenih ukazov bash, na voljo za uporabo v vašem skriptu bash.

Odvisno od oznake in številke različice vašega bash tolmača nekateri ukazi morda ne bodo na voljo.

Zunanji ukazi

Zunanji ukazi so izvedljivi programi, dostopni zunaj bash skripta, kot je curl. Za razliko od funkcij, zunanji ukazi niso shranjeni kot spremenljivke.

Manjša je prednost vrste ukaza, pozneje se lahko ukaz razlaga. Zunanji ukazi imajo najnižji vrstni red v bashu. To je pred izvajanjem zunanjega ukaza, tolmač bash bo poiskal funkcije, nato vgrajene in na koncu poskusil preveriti, ali ukaz obstaja od zunaj. V nasprotnem primeru bi morali videti naslednjo napako.

bash: unknown-command:ukazni najdeno

V bash skriptu lahko funkcije preglasijo vedenje zunanjih ukazov, če imajo enako ime, kot smo ga videli prej v primerih curl bash. Sledi primer zunanjega ukaza po meri s funkcijo.

curl() {
ukaz $ {FUNCNAME}...
}

To deluje, ker imajo funkcije višjo prednost kot zunanji ukazi in celo vgrajeni bash. Omejitev so dovoljeni znaki v imenu funkcije.

Upoštevajte, da je zgornji primer mogoče doseči z vzdevkom, kot sledi.

vzdevek curl= '
{
curl ...
}
'

V primeru vzdevkov se lahko vrsta ukaza razlikuje glede na kontekst, ki se izvaja, medtem ko je v primeru zunanjih ukazov po meri z uporabo funkcije funkcija vstopna točka vedno funkcija.

Funkcije

Funkcije vladajo v bashu. Pred ogledom vgrajenih in zunanjih ukazov bash preveri, ali je funkcija, opredeljena z imenom funkcije kandidata, prva beseda v vrstici ali za; znak, ki označuje konec ukazne vrstice. Edina izjema so spremenljivke bash, napisane z velikimi tiskanimi črkami, na primer $ {FUNCNAME}.

vzdevek() { FUNCNAME= asdf;vrgel ven $ {@ ,,};}
vzdevek curl='TEST CURL ALIAS' #?

Preprosti ukazi

Preprosti ukazi so na straneh bash man opredeljeni kot beseda, ki ji sledijo neobvezni argumenti. V kontekstu je preprost ukaz lahko vgrajen, zunanji ukaz ali funkcija.

Kako izvajati ukaze iz bash skripta

Zdaj, ko vemo, katere vrste ukazov so na voljo, se lahko razširimo na to, kako jih uporabiti v vaših skriptih. Najprej bomo morali vedeti, kako v bash deluje prednost ukazov.

Tukaj je nekaj načinov za nadzor prednosti v bash skriptu.

Naj se bash odloči

ime_ukaze

Večinoma, še posebej na začetku, smo pustili bashu, da se odloči, kateri ukaz bo uporabil. Vendar pa obstajajo primeri, ko bash vašega namena morda ne bo pravilno razložil. Tak je primer, ko se imena funkcij in zunanji ukazi ali vgrajeni elementi prekrivajo.

Izvedite zunanji ukaz

ukazime_ukaze

Predpostavimo, da obstaja zunanji ukaz ime -imena, ki je na voljo v interaktivnem načinu in ga želite uporabiti v bash skriptu. Bashu lahko izrecno povemo, da je command_name zunanji ukaz z uporabo vgrajenega ukaza.

Primeri zunanjih ukazov

Primeri zunanjih ukazov ob predpostavki, da so nameščeni naslednji:

mapa
pojdi
figlet
Primer: Pridobite vrsto datoteke in podatke
{ # dobite vrsto datoteke in podatke
mapa $ {infile} # (1,2)
}
# (1) ukaz, datoteka
# (2) infile = {Pot do datoteke}
Primer: Stage spremenjene in nove datoteke v git
{ # scenskih datotek v git
git add.# (1)
}
# (1) ukaz, git
Primer: Ustvarite umetnost ascii s pomočjo figlet
{ # ustvarite umetnost ascii
figlet$ {message} # (1,2)
}
# (1) ukaz, figlet
# (2) message = {Sporočilo za prikaz kot ascii art}

Izvedite vgrajen ukaz

vgrajenime_ukaze

Recimo, da je ime -ukaza eden od ukazov, opredeljenih kot vgrajen bash. Da bi bash vedeli, da želimo izvajati ime -ukaz kot vgrajen, uporabimo vgrajeno vgrajeno.

Primeri vgrajenih ukazov
Primer: Koliko vgrajenih?
vgrajen{,}{,,}{,,,} # koliko vgrajenih?
Primer: Phantom izjavi
{
izjaviti() { vrgel venups!;}
izjaviti–Xfizjaviti #?
}

Zaključek

Ukaz iz skripta lupine bash je dokaj enostavno izvesti. Obstajajo tri glavne vrste ukazov. Poznavanje, kako se preprosti ukazi razlagajo v bashu, lahko vodi do izboljšanega nadzora nad tem, kakšen tip ukaza se izvaja v času izvajanja.