Kā izpildīt komandas no čaulas skripta

How Execute Commands From Within Shell Script



Bash, komandu izpilde no čaulas skripta sākumā var būt nedaudz biedējoša un var prasīt ticības lēcienu. Galu galā komandas, kas izpildītas bash skripta ietvaros, nav interaktīvas. Šeit mēs izveidosim pamatu komandu izpildei no čaulas skripta, atbildot uz šādiem jautājumiem par komandām: No kurienes tās nāk? Kas viņi ir? Kā mēs tos izmantojam scenārijā?

No kurienes nāk komandas?

Bash komandas nāk no jebkuras no šīm kategorijām:







Bash pats (skat. Iebūvēto)

Bash ir aprīkots ar savu komandu kopu, kas ļauj piekļūt iebūvētajām funkcijām, piemēram, masīvu deklarēšanai, rindiņu lasīšanai no faila un citām iebūvētām funkcijām. Mēs saucam šīs kategorijas komandas, bash iebūvētās komandas vai īsumā - iebūvētās.



Izpildāmas jūsu vidē (skatiet ārējās komandas)

Pēc noklusējuma bash pēc noklusējuma mantos noteiktus mainīgos. Tas tiek novērots mainīgā PATH gadījumā, ieskaitot izpildāmo failu atrašanās vietas, uz kurām bash atsaucas kā uz ārējām komandām. Tas ir, ja čokurošanās komanda ir jūsu ceļā, to var izpildīt no bash skripta tāpat kā interaktīvajā režīmā. Mēs saucam šīs kategorijas komandas, ārējās komandas vai īsumā komandas.



Lietotāja definēta funkcija (sk. Funkcijas)

Pirms ārējo komandu un iebūvēto izpildes bash pārbauda, ​​vai funkcija ir definēta. Ja tā ir, funkcija tiek izpildīta kā komanda. Ja tā nav, tas tiek samazināts komandu secībā. Lai izpildītu funkciju, kas definēta ārpus skripta, tie ir jādeklarē ar atribūtu -x; pretējā gadījumā tos var iekļaut, izmantojot. Komanda. Šīs kategorijas komandas mēs saucam par lietotāja definētām funkcijām vai īsām funkcijām.





Kas ir komandas

Komanda ir jebkurš vārds, kas jāuzskata par vienu programmas ievades punktu čaulas vidē. Ja komanda tiek izpildīta, pati komanda un izvēles argumenti tiek ievadīti kā pozicionālie parametri $ {0}, $ {1}, $ {2},… Nulles pozīcijas parametrs ($ {0}) apzīmē komandu un nemainās kontekstā. Tas ir, atšķirībā no pozīciju parametriem funkcijās $ {1}, $ {2},… kas var mainīties atkarībā no konteksta, $ {0} starp funkciju izsaukumiem nemainās.

Komandas tiek ierobežotas atkarībā no deklarācijas atrašanās vietas un atribūtiem, kas piešķirti kā globāli, iebūvēti bash vai lokāli jūsu bash programmai.



Šeit ir saraksts ar komandu veidiem, kas jāzina.

Iebūvētās komandas

Tie ir bash visuma pirmšķirīgi pilsoņi, ieskaitot tādas rakstzīmes kā “.” ”:” “[“ ’]” Un rezervētus vārdus, piemēram, deklarēt bash. Jūs paļaujaties uz to, ka šīs komandas, kas ir iekļautas bash iebūvēto komandu sarakstā, būs pieejamas izmantošanai jūsu bash skripta ietvaros.

Atkarībā no jūsu bash tulka apzīmējuma un versijas numura dažas komandas var nebūt pieejamas.

Ārējās komandas

Ārējās komandas ir izpildāmas, kas pieejamas ārpus bash skripta, piemēram, curl. Atšķirībā no funkcijām ārējās komandas netiek saglabātas kā mainīgie.

Jo zemāka ir komandas veida prioritāte, jo vēlāk komanda var tikt interpretēta. Ārējām komandām ir zemākā prioritātes pakāpe bash. Tas ir, pirms tiek palaista ārēja komanda, tulks bash, meklēs funkcijas, pēc tam iebūvēto un visbeidzot mēģinās pārbaudīt, vai komanda pastāv ārēji. Ja nē, jums vajadzētu redzēt šādu kļūdu.

bash: unknown-command:komandunav atrasts

Bash skriptā funkcijas var ignorēt ārējo komandu darbību, ja tām ir tāds pats nosaukums, kā mēs to iepriekš redzējām čokurošanās bash piemēros. Tālāk ir sniegts pielāgotas ārējās komandas piemērs, izmantojot funkciju.

čokurošanās() {
komandu $ {FUNCNAME}...
}

Tas darbojas tāpēc, ka funkcijām ir augstāka prioritāte nekā ārējām komandām un pat iebūvētajām bash. Ierobežojums ir funkcijas nosaukumā atļautās rakstzīmes.

Ņemiet vērā, ka iepriekš minēto piemēru var izpildīt, izmantojot šādu aizstājvārdu.

pseidonīms čokurošanās= '
{
čokurošanās ...
}
'

Pseidonīmu gadījumā komandu veids var atšķirties atkarībā no izpildes konteksta, turpretī pielāgoto ārējo komandu gadījumā, izmantojot funkciju metodi, ievades punkts vienmēr ir funkcija.

Funkcijas

Funkcijas valda bash. Pirms aplūkot iebūvētās un ārējās komandas, bash pārbauda, ​​vai funkcija, ko definē kandidāta funkcijas nosaukums, pirmais vārds, kas parādās rindā vai aiz tās; rakstzīme, kas apzīmē komandrindas beigas. Vienīgais izņēmums ir bash mainīgie, kas rakstīti ar lielajiem burtiem, piemēram, $ {FUNCNAME}.

pseidonīms() { FUNCNAME= asdf;izmest ārā $ {@ ,,};}
pseidonīms čokurošanās='TEST CURL ALIAS' #?

Vienkāršas komandas

Vienkāršas komandas bash man lapās ir definētas kā vārds, kam seko izvēles argumenti. Kontekstā vienkārša komanda var būt iebūvēta, ārēja komanda vai funkcija.

Kā izpildīt komandas no bash skripta

Tagad, kad mēs zinām, kāda veida komandas ir pieejamas, mēs varam izvērsties, kā tās izmantot skriptos. Pirmkārt, mums būs jāzina, kā komandu prioritāte darbojas bash.

Šeit ir daži veidi, kā kontrolēt prioritāti bash skriptā.

Lai bash izlemj

command_name

Lielākoties, it īpaši sākumā, mēs vienkārši ļaujam bash izlemt, kuru komandu izmantot. Tomēr ir gadījumi, kad bash jūsu nodomu var nepareizi interpretēt. Tas ir gadījums, kad funkciju nosaukumi un ārējās komandas vai iebūvētās ierīces pārklājas.

Izpildiet ārēju komandu

komanducommand_name

Pieņemsim, ka interaktīvā režīmā ir pieejama ārēja komanda command_name un vēlaties to izmantot bash skriptā. Mēs varam skaidri pateikt bash, ka command_name ir ārēja komanda, izmantojot komandu builtin.

Ārējo komandu piemēri

Ārējo komandu piemēri, pieņemot, ka ir instalēti šādi:

failu
iet
figulīte
Piemērs: iegūstiet faila tipu un informāciju
{ # iegūt faila tipu un informāciju
failu $ {infile} # (1,2)
}
# (1) komanda, fails
# (2) infile = {Ceļš uz failu}
Piemērs: skatiet modificētus un jaunus failus git
{ # posma faili git
git pievienot.# (1)
}
# (1) komanda, git
Piemērs: izveidojiet ascii art, izmantojot figuli
{ # radīt ascii mākslu
figulīte$ {message} # (1,2)
}
# (1) komanda, figūle
# (2) message = {Ziņojums, kas jāparāda kā ascii art}

Izpildiet iebūvētu komandu

iebūvētscommand_name

Pieņemsim, ka command_name ir viena no komandām, kas definēta kā iebūvēta bash. Lai bash zinātu, ka vēlamies palaist komandu_nosaukums kā iebūvētu, mēs izmantojam iebūvēto.

Iebūvēto komandu piemēri
Piemērs: Cik iebūvētu?
iebūvēts{,}{,,}{,,,} # cik iebūvētu?
Piemērs: Fantoms deklarē
{
deklarēt() { izmest ārāUps!!;}
deklarēt- xfdeklarēt #?
}

Secinājums

Izpildīt komandu no bash shell skripta ir diezgan viegli. Ir trīs galvenie komandu veidi. Zinot, kā vienkāršas komandas tiek interpretētas bash, var uzlabot kontroli pār to, kāda veida komanda tiek izpildīta izpildlaika laikā.