ПредишенСледващото

Ако можете да въвеждате команди на черупка Linux, можете да напишете шел скриптове Борн (Баш). Сценарият - последователност от команди, съхранявани в досието, черупката приема команди от файла, тъй като, ако сте въвели командите от терминала.

Както при всяка програма за Unix системи, трябва да имате набор от битове за изпълнение на скрипта, но можете също да зададете прочетените бита. Това е най-лесният начин да направите това:

Linux Shell Script Основи

За да тествате командата, можете да инсталирате Linux на вашия компютър или да разпореди на сървъра или дори VPS. Всички Bourne шел скриптове трябва да започват с следния ред, което означава, че програмата / хамбар / ш е да изпълнява команди в скрипт файл:

Уверете се, че в началото на файла, няма интервали. Можете да направите списък на всички команди, които искате да предадете на изпълнението на черупката след ред #! / Bin / ш. Ето един много прост пример:

#! / Bin / ш
#
# Print нещо, след това пуснете ли
ехо За да изпълните командата LS. LS

След създаването на скрипта и определяне на правата за достъп, можете да стартирате скрипта чрез поставяне на скрипт в един от директории и след това изпълнете скрипта от командния ред. Или можете да стартирате ./script, ако скриптът се намира в същата директория, в която сте в момента работи.

черупки скриптове ограничения

Дръжте под око от размера на вашите скриптове. Bash скриптове не трябва да са много големи (въпреки че със сигурност се срещнаха по време на престоя си с тези чудовища).

цитирайки константи

Постоянно - низ, че черупката не трябва да се променят, когато се движите в командния ред. За да видите къде константа може да бъде полезна, помислете за пример за това как черупка Баш обикновено се разпространява * за всички файлове и директории в текущата директория, а след това преминава тези елементи на сегашната командния ред. Ако просто искате една звезда (*) използвайте командата за Впиши, както и други програми, които използват конвенционален: израз, трябва специална нотация за заобикаляне константа *.

Най-лесният начин да направите това, че черупката не докосва линията, е да се приложи целият низ в единични кавички. Ето един пример на Впиши и *.

Впиши "R. * т '/ и т.н. / ако съществува

Всички знаци, поставени между двете единични кавички, включително пространства се превръщат в една постоянна. Следователно, следващата команда не работи, тъй като тя изисква командата Впиши за търсене на низ г * т / т.н. / ако съществува от стандартния изход (защото е посочен само един параметър) .:

Впиши "R. * т / т.н. / ако съществува"

Двойни кавички ( "), които работят, както и единични, с изключение на това, че Баш важи за всички променливи, които се намират вътре в кавичките двойни, а след това не се отнася за променливи в тялото на единични кавички. Можете да видите разликата, като пуснете следната команда и да се замени двойните кавички, с една, тя да започне отново.

ехо "Няма * в моя път: $ PATH"

Основният трик при използване на константи в обвивката Bourne - е константа за трансфер в единични кавички екип. Можете да направите това чрез поставяне на наклонена черта пред единични кавички:

ехо аз не т \ 'като контракции вътре шел скриптове.

И цитатът, и наклонена черта, трябва да е извън всяка двойка от единични кавички. Линии като * Дон т \ ", водят до синтактична грешка. Въпреки това, достатъчно странно, можете да затворите единичните кавички вътре двойни кавички, като следния пример (изходът е идентичен с този в предишната команда):

ехо "Не ми харесва контракции вътре шел скриптове."

Специални променливи Linux черупка

Повечето шел скриптове разбира параметрите на командния ред, и да си взаимодействат с отборите, които те започнат. За да напишете вашите скриптове от прости команди списъци за по-гъвкави програми, трябва да знаете как да използвате специални променливи Bourne Shell преводач. Използването на специфични променливи не е много по-различен от използването на всякакви други черупки променливи, но не можете да промените стойността на конкретните специални променливи.

След като прочетете следващите няколко глави, ще разберете защо шелскрипт натрупват много специални символи, след като пише. Ако се опитвате да се разбере едно от скриптове и лицето с линия, която изглежда абсолютно неразбираемо, разглоби го на части.

$ 1, $ 2, ...
$ 1, $ 2, и всички променливи, наречени положителни числа, различни от нула, съдържащи стойности на параметрите на скрипт или аргументи. Да предположим, че този сценарий се нарича pshow:
#! / Bin / ш
ехо Първи аргумент: $ 1
ехо Трети аргумент: $ 3

Run [pshow един два три] дава следния резултат:

Първи аргумент: една трета аргумент: три

Вграден команда смяна черупка се използва без мотивирани променливи. Тази команда изтрива първия аргумент ($ 1) и аванси на други аргументи в аванс - това е, $ 2 става $ 1, $ 3 става $ 2.

Да предположим, че следното име на скрипт shiftex:

#! / Bin / ш
ехо Аргумент: $ 1
изместване
ехо Аргумент: $ 1
изместване
ехо Аргумент: $ 1
изместване

Старт shiftex един два три. Ще завърша

Аргумент: един, Аргумент: две Аргумент: три

$ #
променлива $ # съдържа броя на аргументи подадени на скрипта. Тази променлива е особено важно, когато започнете да се премине цикъл, за да изберете аргументите; когато $ # 0, не е аргумент, така че $ 1 е празен.

# R / хамбар / од
GS -q -dBATCH -dSAFER -s OutputFile = - = -sDevice pnmraw $ @

#! / Bin / ш
GS -q -Dbatch -dNOPAUSE -dSAFER \
-и OutputFile = - -sDevice = pnmraw $ @

Заключение $ @ в двойни кавички ( "$ @") се отнася за параметрите, разделени с интервали.

$ 0
0 $ променлива съдържа името на сценария и е много полезно за създаването на диагностични съобщения. Да предположим, че скрипта ви трябва да докладват неправилен аргумент, който се съхранява в променливата $ BADPARM. Можете да отпечатате диагностична съобщение със следния ред, така че името на скрипта ще се появи в съобщението за грешка:

ехо $ 0: лош вариант $ BADPARM

ехо $ 0: лош вариант $ BADPARM 1> # 038; 2

$$
Променлива съдържа $$ процес ID облицовка.

$?
Променливата $? Той съдържа последната команда код, който се изпълнява от черупката. код на завършване е много важно да се контролира шел скриптове, и това ще бъде обяснено по-късно.

изходните кодове

Когато една програма Linux излиза, той оставя след себе си пълен код на процеса на родител, който започна на програмата. код на завършване - този номер, а понякога и той се нарича код за грешка. Когато нула код за изход (0), това означава, че програмата работи без проблеми. Въпреки това, ако в програмата има грешка, то обикновено завършва с някои не-нула номер.

Код на последната команда завършване се съдържа в специален променливата $. така че можете да го проверите сами в бързата си обвивка:

$ Is /> / сътрудничество / нула
$ Echo $?
0
$ Is / asdfasdf> / сътрудничество / нула
Е: / asdfasdf: Няма такъв файл или директория
$ Echo $?
1

Вие виждате, че една успешна команда връща 0, докато неуспешен команда връща 1. Ако възнамерявате да използвате код за изход на отбора, че трябва да използвате или съхранявате кода веднага след старт команда. Например, ако ви свършат трета ехо $? веднага след предишната последователност от команди, резултатът е 0, тъй като вторият от двата отбора ехо успява.

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

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

VPS / VDS за 389 стр. от RigWEB.RU с прилагане

Свързани статии

Подкрепете проекта - споделете линка, благодаря!