Как да изпълнявате команди от скрипт на обвивка

How Execute Commands From Within Shell Script



В bash изпълнението на команди от скрипт на обвивката може да бъде малко плашещо в началото и може да изисква скок на вяра. В крайна сметка командите, изпълнявани в bash скрипт, не са интерактивни. Тук ще поставим основата за изпълнение на команди от скрипта на обвивката, отговаряйки на следните въпроси относно командите: Откъде идват? Какво са те? Как да ги използваме в скрипт?

Откъде идват команди?

Командите в bash идват от някоя от следните категории:







Самият Bash (вижте вградените)

Bash идва със собствен набор от команди, които позволяват достъп до вградените му функции, като например деклариране на масиви, четене на редове от файл и други функции, вградени в bash. Ние наричаме команди от тази категория, bash вградени команди или вградени за краткост.



Изпълними файлове във вашата среда (вижте външни команди)

По подразбиране bash ще наследи определени променливи по подразбиране. Това се наблюдава в случая на променливата PATH, включително местоположения за изпълними файлове, които са посочени като външни команди в bash. Тоест, ако къдрица командата е по пътя ви, тя може да бъде изпълнена от скрипт bash по същия начин, както в интерактивен режим. Ние наричаме команди от тази категория, външни команди или команди накратко.



Дефинирана от потребителя функция (вижте функциите)

Преди да изпълни външни команди и вградени файлове, bash проверява дали е дефинирана функция. Ако е така, функцията се изпълнява като команда. Ако това не стане, той продължава по реда на предимство на командите. За да се изпълни функция, определена извън скрипта, те трябва да бъдат декларирани с атрибута -x; в противен случай те могат да бъдат включени с помощта на. Команда. Ние наричаме команди от тази категория дефинирани от потребителя функции или функции за кратко.





Какво представляват командите

Команда е всяка дума, която трябва да се третира като единична точка на влизане на програма в средата на обвивката. В случай, че командата се изпълнява, самата команда и незадължителните аргументи се предават като позиционни параметри, $ {0}, $ {1}, $ {2}, ... Нулевият позиционен параметър ($ {0}) обозначава самата команда и е непроменена в контекста. Тоест, за разлика от позиционните параметри във функции, $ {1}, $ {2},… които могат да се променят в зависимост от контекста, $ {0} е непроменен между извикванията на функции.

Обхватът на командите зависи от местоположението на декларацията и атрибутите, присвоени като глобални, вградени в bash или локални към вашата програма bash.



Ето списък на типовете команди, които трябва да знаете.

Вградени команди

Това са първокласни граждани на вселената bash, включително знаци като „.“ ‘:’ [[‘’] ’И запазени думи като деклариране в bash. Разчитате на тези команди, съдържащи се в списъка с вградени команди bash, да бъдат достъпни за използване във вашия bash скрипт.

В зависимост от обозначението и номера на версията на вашия bash интерпретатор някои команди може да не са налични.

Външни команди

Външните команди са изпълними, достъпни извън bash скрипт като curl. За разлика от функциите, външните команди не се съхраняват като променливи.

Колкото по -нисък е приоритетът на тип команда, толкова по -късно командата може да бъде интерпретирана. Външните команди имат най -ниския ред на приоритет в bash. Това е преди изпълнението на външна команда, интерпретаторът bash, ще търси функции, след това вградени и накрая ще се опита да види дали команда съществува външно. Ако не, трябва да видите следната грешка.

bash: unknown-command:командане е намерен

В bash скрипт функциите могат да отменят поведението на външни команди, ако споделят същото име, както видяхме по -рано в примерите за curl bash. Следва пример за персонализирана външна команда, използваща функция.

къдрица() {
команда $ {FUNCNAME}...
}

Това работи, защото функциите имат по -висок приоритет от външните команди и дори bash вградени. Ограничението е допустимите знаци в името на функцията.

Обърнете внимание, че горният пример може да бъде изпълнен с помощта на псевдоним, както следва.

псевдоним къдрица= '
{
къдрица ...
}
'

В случай на псевдоними, видът на командата може да се различава в зависимост от контекста в изпълнение, докато в случай на персонализирани външни команди, използващи метод на функция, входната точка винаги е функция.

Функции

Функциите управляват в bash. Преди да разгледате вградени и външни команди, bash проверява дали функция, дефинирана от име на функция кандидат, първата дума се появява на ред или след; символ, обозначаващ края на командния ред. Единственото изключение са променливите bash, написани с главни букви като $ {FUNCNAME}.

псевдоним() { FUNCNAME= asdf;изхвърлен $ {@ ,,};}
псевдоним къдрица='TEST CURL ALIAS' #?

Прости команди

Простите команди се дефинират в страниците на bash man като дума, последвана от незадължителни аргументи. В контекста простата команда може да бъде вградена, външна команда или функция.

Как да изпълнявате команди от bash скрипт

Сега, след като знаем какви типове команди са налични, можем да разгледаме как да ги използваме във вашите скриптове. Първо, ще трябва да знаем как приоритетът на командите работи в bash.

Ето няколко начина за контрол на приоритета в bash скрипт.

Нека баш да реши

command_name

В по -голямата си част, особено в началото, просто оставяме bash да реши коя команда да използва. Има обаче случаи, когато намерението ви може да не се интерпретира правилно от bash. Такъв е случаят, когато имената на функциите и външните команди или вградените елементи се припокриват.

Изпълнете външна команда

командаcommand_name

Да предположим, че има външна команда command_name, която е достъпна в интерактивен режим и искате да я използвате в bash скрипт. Можем изрично да кажем на bash, че command_name е външна команда, използвайки вградената команда.

Примери за външни команди

Примери за външни команди, предполагащи, че са инсталирани следните:

файл
отивам
филе
Пример: Вземете тип файл и информация
{ # вземете типа и информацията за файла
файл $ {infile} # (1,2)
}
# (1) команда, файл
# (2) infile = {Път към файла}
Пример: Етап модифицирани и нови файлове в git
{ # сценични файлове в git
git добави.# (1)
}
# (1) команда, git
Пример: Създайте ascii art с помощта на фигурка
{ # създайте ascii art
филе$ {съобщение} # (1,2)
}
# (1) команда, фигурка
# (2) message = {Съобщение за показване като ascii art}

Изпълнете вградена команда

вграденcommand_name

Да предположим, че command_name е една от командите, дефинирани като вграден в bash. За да уведомим bash, че искаме да изпълним command_name като вграден, използваме вградения вграден.

Примери за вградени команди
Пример: Колко вградени?
вграден{,}{,,}{,,,} # колко вградени?
Пример: Phantom декларира
{
декларирам() { изхвърленупс!;}
декларирам–Xfдекларирам #?
}

Заключение

Доста е лесно да изпълните команда от скрипта на bash shell. Има три основни типа команди. Познаването на начина, по който простите команди се интерпретират в bash, може да доведе до подобрен контрол върху това какъв тип команди се изпълняват по време на изпълнение.