Kako izvršavati naredbe iz ljuske skripte

How Execute Commands From Within Shell Script

U bashu, izvršavanje naredbi iz ljuske skripte isprva može biti pomalo zastrašujuće i može zahtijevati skok vjere. Uostalom, naredbe izvedene unutar bash skripte nisu interaktivne. Ovdje ćemo postaviti temelje za izvršavanje naredbi iz ljuske skripte odgovarajući na sljedeća pitanja o naredbama: Odakle dolaze? Što su oni? Kako ih koristimo u skripti?

Odakle dolaze naredbe?

Naredbe u bashu dolaze iz bilo koje od sljedećih kategorija:



Sam bash (vidi ugrađene)

Bash dolazi sa svojim vlastitim skupom naredbi koje omogućuju pristup njegovim ugrađenim značajkama kao što su deklariranje polja, čitanje redaka iz datoteke i druge značajke ugrađene u bash. Nazivamo naredbe ove kategorije, bash izgrađene naredbe ili skraćeno ugrađene.



Izvršne datoteke u vašem okruženju (pogledajte vanjske naredbe)

Prema zadanim postavkama, bash će prema zadanim postavkama naslijediti određene varijable. To se opaža u slučaju varijable PATH, uključujući lokacije za izvršne datoteke koje se u bashu pozivaju na vanjske naredbe. Odnosno, ako je kovrča naredba vam je na putu, može se izvesti iz bash skripte na isti način kao u interaktivnom načinu. Naredbe ove kategorije nazivamo, vanjske naredbe ili kratke naredbe.



Korisnički definirana funkcija (vidi funkcije)

Prije izvođenja vanjskih naredbi i ugrađenih elemenata, bash provjerava je li funkcija definirana. Ako je to, funkcija se izvršava kao naredba. Ako se to ne dogodi, nastavlja se prema nizu prioriteta za naredbe. Da bi se izvršila funkcija definirana izvan skripte, moraju se deklarirati s atributom -x; u protivnom se mogu uključiti pomoću. Naredba. Naredbe ove kategorije korisnički definirane funkcije ili funkcije nazivamo skraćeno.

Što su naredbe

Naredba je svaka riječ koju treba tretirati kao jednu ulaznu točku programa unutar ljuskastog okruženja. U slučaju da se naredba izvrši, sama naredba i izborni argumenti se prosljeđuju kao pozicijski parametri, $ {0}, $ {1}, $ {2}, ... Nulti pozicijski parametar ($ {0}) označava sama naredba i ne mijenja se u kontekstu. To jest, za razliku od parametara položaja u funkcijama, $ {1}, $ {2},… koji se mogu promijeniti ovisno o kontekstu, $ {0} je nepromijenjen između poziva funkcije.

Naredbe imaju opseg ovisno o mjestu deklaracije i atributima dodijeljenim kao globalni, ugrađeni u bash ili lokalni u vašem bash programu.



Ovdje je popis vrsta naredbi koje morate znati.

Ugrađene naredbe

To su prvorazredni građani bash univerzuma, uključujući likove poput ‘.’ ‘:’ ‘[‘ ‘]’ I rezervirane riječi poput deklarirati u bash. Računate na to da će ove naredbe, sadržane na popisu bash izgrađenih naredbi, biti dostupne za upotrebu u vašoj bash skripti.

Ovisno o oznaci i broju verzije vašeg bash tumača, neke naredbe možda neće biti dostupne.

Vanjske naredbe

Vanjske naredbe su izvršne datoteke dostupne izvan bash skripte poput curla. Za razliku od funkcija, vanjske naredbe nisu pohranjene kao varijable.

Što je niži prioritet vrste naredbe, kasnije se naredba može tumačiti. Vanjske naredbe imaju najniži red prvenstva u bashu. To je prije izvođenja vanjske naredbe, tumač bash će potražiti funkcije, zatim ugrađene i na kraju pokušati vidjeti postoji li naredba izvana. Ako ne, trebali biste vidjeti sljedeću pogrešku.

bash: unknown-command:naredbanije pronađeno

U bash skripti funkcije mogu nadjačati ponašanje vanjske naredbe ako dijele isti naziv, kao što smo već vidjeli u primjerima curl bash. Slijedi primjer prilagođene vanjske naredbe koja koristi funkciju.

kovrča() {
naredba $ {FUNCNAME}...
}

To funkcionira jer funkcije imaju veći prioritet od vanjskih naredbi, pa čak i ugrađenih komponenti bash. Ograničenje su dopušteni znakovi u nazivu funkcije.

Imajte na umu da se gornji primjer može postići pomoću pseudonima kako slijedi.

alias kovrča= ’
{
kovrča ...
}
'

U slučaju zamjenskih imena, vrsta naredbe može se razlikovati ovisno o kontekstu u izvođenju, dok je u slučaju prilagođenih vanjskih naredbi koje koriste metodu funkcije, ulazna točka uvijek funkcija.

Funkcije

Funkcije vladaju u bashu. Prije pregleda ugrađenih i vanjskih naredbi, bash provjerava je li funkcija definirana imenom funkcije kandidata, prva riječ se pojavljuje na retku ili iza; znak koji označava kraj naredbenog retka. Jedina iznimka su varijable bash napisane velikim slovima, kao što je $ {FUNCNAME}.

alias() { FUNCNAME= asdf;izbaciti $ {@ ,,};}
alias kovrča='TEST CURL ALIAS' #?

Jednostavne naredbe

Jednostavne naredbe definirane su na bash man stranicama kao riječ nakon koje slijede izborni argumenti. U kontekstu, jednostavna naredba može biti ugrađena, vanjska naredba ili funkcija.

Kako izvršavati naredbe iz bash skripte

Sada kada znamo koje su vrste naredbi dostupne, možemo proširiti kako ih koristiti u vašim skriptama. Prvo ćemo morati znati kako prioritet naredbi radi u bashu.

Evo nekoliko načina za kontrolu prioriteta u bash skripti.

Neka bash odluči

ime_naredbe

U većini slučajeva, osobito na početku, samo smo pustili bash da odluči koju naredbu će koristiti. Međutim, postoje slučajevi kada bash vašu namjeru možda neće ispravno protumačiti. Takav je slučaj kada se nazivi funkcija i vanjske naredbe ili ugrađeni elementi preklapaju.

Izvršite vanjsku naredbu

naredbaime_naredbe

Pretpostavimo da postoji vanjska naredba command_name koja je dostupna u interaktivnom načinu rada i želite je koristiti u bash skripti. Bash možemo izričito reći da je command_name vanjska naredba pomoću ugrađene naredbe.

Primjeri vanjskih naredbi

Primjeri vanjskih naredbi pod pretpostavkom da je instalirano sljedeće:

datoteka
ići
figlet
Primjer: Dohvatite vrstu datoteke i informacije
{ # dobiti vrstu datoteke i informacije
datoteka $ {infile} # (1,2)
}
# (1) naredba, datoteka
# (2) infile = {Put do datoteke}
Primjer: Izmjenjene i nove datoteke u git
{ # faznih datoteka u gitu
git add.# (1)
}
# (1) naredba, git
Primjer: Stvorite ascii umjetnost pomoću figleta
{ # stvorite ascii umjetnost
figlet$ {poruka} # (1,2)
}
# (1) naredba, figlet
# (2) message = {Poruka za prikaz kao ascii umjetnost}

Izvršite ugrađenu naredbu

ugrađenime_naredbe

Pretpostavimo da je command_name jedna od naredbi definiranih kao ugrađeni bash. Da bismo bashu dali do znanja da želimo pokrenuti command_name kao ugrađeni, koristimo ugrađeno ugrađeno.

Primjeri ugrađenih naredbi
Primjer: Koliko ugrađenih?
ugrađen{,}{,,}{,,,} # koliko ugrađenih?
Primjer: Phantom izjavljuje
{
proglasiti() { izbacitiups!;}
proglasiti–Xfproglasiti #?
}

Zaključak

Prilično je jednostavno izvršiti naredbu iz skripte bash ljuske. Postoje tri glavne vrste naredbi. Poznavanje načina na koji se jednostavne naredbe tumače u bashu može dovesti do poboljšane kontrole nad vrstom naredbe koja se izvršava u vrijeme izvođenja.