Како извршавати команде из љуске скрипте

How Execute Commands From Within Shell Script



У басх -у, извршавање наредби из љуске скрипте у почетку може бити мало застрашујуће и може захтевати скок вере. На крају, команде које се извршавају унутар басх скрипте нису интерактивне. Овде ћемо поставити основу за извршавање команди из љуске скрипте одговарајући на следећа питања о командама: Одакле долазе? Шта су они? Како их користимо у скрипти?

Одакле долазе команде?

Команде у басху долазе из било које од следећих категорија:







Басх сама (погледајте уграђене)

Басх долази са сопственим скупом команди које омогућавају приступ његовим уграђеним функцијама као што су декларисање низа, читање редова из датотеке и друге функције уграђене у басх. Називамо команде ове категорије, басх уграђене команде или скраћено уграђене.



Извршне датотеке у вашем окружењу (погледајте спољне команде)

Подразумевано, басх ће подразумевано наследити одређене променљиве. Ово се примећује у случају променљиве ПАТХ, укључујући локације за извршне датотеке које се у басх -у позивају на спољне команде. То јест, ако је цурл команда вам је на путу, може се извршити из басх скрипте на исти начин као у интерактивном режиму. Називамо команде ове категорије, спољне команде или скраћено команде.



Кориснички дефинисана функција (погледајте функције)

Пре извршавања спољних команди и уграђених компоненти, басх проверава да ли је функција дефинисана. Ако је тако, функција се извршава као наредба. Ако се то не догоди, наставља се према редоследу првенства наредби. Да би се извршиле функције дефинисане изван скрипте, морају бити декларисане са -к атрибутом; у супротном се могу укључити помоћу. Команда. Наредбе ове категорије кориснички дефинисане функције или функције називамо скраћено.





Шта су команде

Наредба је свака реч која се третира као јединствена тачка уласка програма у окружење љуске. У случају да се команда изврши, сама команда и опционални аргументи се прослеђују као позициони параметри, $ {0}, $ {1}, $ {2}, ... Нулти позициони параметар ($ {0}) означава сама команда и непромењена је у контексту. То јест, за разлику од параметара положаја у функцијама, $ {1}, $ {2},… који се могу мењати у зависности од контекста, $ {0} је непромењен између позива функција.

Наредбе имају опсег у зависности од локације декларације и атрибута који су додељени као глобални, уграђени у басх или локални у вашем басх програму.



Ево листе типова команди које треба знати.

Уграђене команде

Ово су првокласни грађани басх универзума, укључујући знакове као што су „.“ ‘:’ ‘[‘ ‘]’ И резервисане речи попут декларирати у басх-у. Рачунате на то да ће ове команде, садржане у листи басх уграђених команди, бити доступне за употребу у вашем басх скрипту.

У зависности од ознаке и броја верзије вашег басх тумача, неке команде можда неће бити доступне.

Спољне команде

Спољне команде су извршне датотеке доступне ван басх скрипте као што је цурл. За разлику од функција, спољне команде се не чувају као променљиве.

Што је нижи приоритет типа команде, касније се наредба може тумачити. Спољне команде имају најнижи ред првенства у басх -у. То је пре покретања спољне команде, тумач басх ће потражити функције, затим уграђене и на крају покушати да види да ли команда постоји споља. У супротном би требало да видите следећу грешку.

басх: ​​ункновн-цомманд:команданије пронађен

У басх скрипти функције могу надјачати понашање спољне команде ако деле исто име, као што смо раније видели у примерима цурл басх. Следи пример прилагођене спољне команде која користи функцију.

цурл() {
команда $ {ФУНЦНАМЕ}...
}

Ово функционише јер функције имају већи приоритет од спољних команди, па чак и басх уграђених. Ограничење су дозвољени знакови у називу функције.

Имајте на уму да се горњи пример може постићи помоћу псеудонима на следећи начин.

алиас цурл= '
{
цурл ...
}
'

У случају псеудонима, тип команде се може разликовати у зависности од контекста у извођењу, док је у случају прилагођених спољних команди које користе методу функције, улазна тачка увек функција.

Функције

Функције владају у басх -у. Пре него што погледате уграђене и спољне команде, басх проверава да ли је функција дефинисана именом функције кандидата, прва реч се појављује на линији или иза; знак који означава крај командне линије. Једини изузетак су променљиве басх написане великим словима, као што је $ {ФУНЦНАМЕ}.

алиас() { ФУНЦНАМЕ= асдф;Избацио $ {@ ,,};}
алиас цурл='ТЕСТ ЦУРЛ АЛИАС' #?

Једноставне команде

Једноставне команде су дефинисане на басх ман страницама као реч праћена опционим аргументима. У контексту, једноставна команда може бити уграђена, спољна команда или функција.

Како извршавати команде из басх скрипте

Сада када знамо које су врсте команди доступне, можемо проширити како их користити у вашим скриптама. Прво ћемо морати да знамо како приоритет команде функционише у басху.

Ево неколико начина за контролу приоритета у басх скрипти.

Нека басх одлучи

цомманд_наме

У већини случајева, посебно на почетку, само смо пустили басх да одлучи коју наредбу ће користити. Међутим, постоје случајеви када басх можда не може правилно протумачити вашу намеру. Такав је случај када се имена функција и спољне команде или уграђени елементи преклапају.

Извршите спољну команду

командацомманд_наме

Претпоставимо да постоји спољна команда цомманд_наме која је доступна у интерактивном режиму и желите да је користите у басх скрипти. Можемо експлицитно рећи басх -у да је цомманд_наме спољна команда користећи уграђену команду.

Примери спољних команди

Примери спољних команди под претпоставком да је инсталирано следеће:

филе
иди
фиглет
Пример: Добијте врсту датотеке и информације
{ # добити врсту датотеке и информације
филе $ {инфиле} # (1,2)
}
# (1) команда, датотека
# (2) инфиле = {Пут до датотеке}
Пример: Стадирајте измењене и нове датотеке у гит
{ # фазних датотека у гит -у
гит адд.# (1)
}
# (1) команда, гит
Пример: Креирајте асции уметност користећи фиглет
{ # створите асции уметност
фиглет$ {мессаге} # (1,2)
}
# (1) команда, фиглет
# (2) мессаге = {Порука за приказ као асции арт}

Извршите уграђену команду

изграђенцомманд_наме

Претпоставимо да је цомманд_наме једна од наредби дефинисаних као уграђени басх. Да бисмо басху дали до знања да желимо да покренемо цомманд_наме као уграђени, користимо уграђено уграђено.

Примери уграђених команди
Пример: Колико уграђених?
изграђен{,}{,,}{,,,} # колико уграђених?
Пример: Пхантом изјављује
{
изјавити() { Избациоупс!;}
изјавити–Ксфизјавити #?
}

Закључак

Прилично је лако извршити наредбу из скрипте басх љуске. Постоје три главне врсте наредби. Познавање начина на који се једноставне команде тумаче у басху може довести до побољшане контроле над тим који тип команде се извршава у току извођења.