Писане на скриптове в Баш, losst

Без значение колко проста е графичния потребителски интерфейс за Linux, и колко по-добре или по-зле функции, все още е проблем, който е по-удобно да се реши чрез терминала. На първо място, тъй като тя е по-бързо, и второ - не всички машини са с графичен интерфейс, като например сървъри, всички действия се извършват през терминала, за да се спаси и изчислителни ресурси.







скриптови Основи

Сценарий, или както я наричат ​​- сценарият е последователност от команди, които от своя страна чете и изпълнява интерпретатора програма, в този случай, програма за команден ред - Баш.

Сценарий - е обикновен текстов файл, който посочва общи команди, които сме свикнали да се въведе ръчно, както и програма за ориентиране, които ще ги изпълняват. Товарачът, който ще изпълни сценария не може да работи с променливи на средата, така че е необходимо да бъдат прехвърлени на точния път към програмата, която искате да стартирате. И тогава той е бил дадете скрипт за тази програма и да започне изпълнението на проекта.

Най-простият пример скрипт за Баш черупка:

#! / Bin / Баш
ехо "Здравей, свят"

Как да напиша сценарий

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

#! / ЮЕсАр / хамбар / Околна среда питон
печат ( "Здравей, свят")

#! / ЮЕсАр / хамбар / Околна среда PHP
ехо "Здравей, свят";

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

$ Коригират Ugo + х fayl_skripta

Сега, ние правим всичко първо за малките програма:

Как да напиша сценарий

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

Променливи в скриптове

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

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

Например, да декларира променлива низ:

Значение нашите цитирани низове. Но в действителност, не винаги са необходими кавичките. Там остава основен принцип на Баш - пространство - е специален характер, разделител, така че ако не използвате кавички свят вече ще се счита за отделна команда по същата причина ние не оставете разстояние преди и след знака за равенство.

За да се покаже стойността на символа за $ се използва. Например:

Ние променят нашия скрипт:

Баш не прави разлика между видове променливи като езици от високо ниво като C ++, можете да зададете променлива, тъй като броят и низ. И все пак тя ще се разглежда като низ. Черупката извършва само сливане на линии, това просто напишете имената на променливи в един ред:

#! / Bin / Баш
string1 = "здравей"
string2 = свят
низ = $ string1 $ string2 \ и \ мен
String3 = $ string1 $ string2 "и аз"
ехо $ String3

Как да напиша сценарий

Моля, имайте предвид, че както казах, кавичките не са задължителни, ако линията все още няма специални знаци. Погледнете внимателно в двете линии се сливат методи е доказано, ролята на кавичките. Ако имате нужда от по-сложни начини за работа с линии или аритметични операции, това не е възможно в черупката, за тази цел, обслужващи програми.

Променливи и изходни команди

Променливи не биха били толкова полезни, ако се налага да запишете резултата от помощните програми, не може да бъде в тях. За да направите това, използвайте следния синтаксис:







С тази конструкция, изход екип се пренасочва обратно до мястото, където се е наричал, а не на екрана. Например, датата на помощната програма връща текущата дата. Тези команди са еквивалентни:

Как да напиша сценарий

string1 = "Hello World"
string2 = $ (дата)

Как да напиша сценарий

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

Параметрите на сценария

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

Променлива име 1 съдържа стойността на първия параметър, променлива, 2 втората и така нататък. Това Баш скрипт ще покаже първия параметър:

Как да напиша сценарий

Как да напиша сценарий

Контролни структури в Scripts

Създаване не би било толкова полезно Баш скрипт, без възможност да се анализират някои фактори, и да изпълнява, в отговор който желаната действия. Това е една доста сложна тема, но това е много важно да се създаде Баш скрипт.

В Баш разполага с екип от своя синтаксис е да се тества условия:

Тази команда проверява състояние код за команда, за да завърши и ако 0 (успех), която изпълнява команда или няколко команди след думата след това, ако кодът за изход 1 се извършва блок друго Fi означава завършване на командите за единица продукция.

Но тъй като ние често не сме заинтересовани отбори връщат код и сравняване на низове и числа, екипът е въведено [[, който ви позволява да изпълнява различни сравнения и да предостави код на връщане, в зависимост от резултата от сравнението. Синтаксисът е:

[[Параметър1 параметър2 оператор]]

За сравнение използвахме познатите вече отчети <,>,=, = И т.н. Ако изразът е верен, командата връща 0, ако не -. 1. Можете да го малко терминал поведение тест. последната команда връщане код се съхранява в променливата $?:

Как да напиша сценарий

Сега комбиниране на всичко това и да получите сценария с условен израз:

#! / Bin / Баш
ако [[$ 1> 2]]
след това
ехо $ 1 "е по-голяма от 2"
още
ехо $ 1 "е по-малко от 2 или 2 '
Fi

Как да напиша сценарий

Как да напиша сценарий

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

Цикли в скриптове

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

Първо погледнете цикъла за. Ето синтаксиса:

Тя минава през целия списък, и разпределя стойността на променлива в даден момент от списъка, след всяка задача се изпълнява команди, разположени между задачи и направи.

Например, нека да погледнем през пет номера:

за индекс през януари 2 3 4 5
правя
ехо индекс $
свършен

Как да напиша сценарий

Как да напиша сценарий

Или можете да се изброят всички файлове в текущата директория:

$ За файл в $ (LS -l); се ехо "$ файл"; свършен

Как да напиша сценарий

Както можете да си представите, че не може да показва само имената, но и да извършат необходимите действия, то е много полезно, когато създавате Баш скрипт.

Вторият цикъл, който ще разгледаме - това е линия, докато тя е в сила до командата условия връща код на 0, успех. Да разгледаме следния синтаксис:

#! / Bin / Баш
индекс = 1
докато [[$ индекс <5 ]]
правя
ехо индекс $
нека "индекс = индекс + 1"
свършен

Как да напиша сценарий

Как да напиша сценарий

Както можете да видите, всичко е направено, нека отборът просто изпълнява определената математическа операция, в този случай, увеличава стойността на променливата по един.

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

индекс = 1; докато [[$ индекс <5 ]]; do echo $index; let "index=index+1"; done;

Това е много проста, аз се опитах да не се усложни история допълнителни условия и възможности Баш, само най-основните. В някои случаи може да се наложи да се направи GUI за Баш скрипт. След това можете да използвате програми като Zenity или kdialog, които ги използват много удобен за показване на съобщения до потребителя, а дори и да иска информация му.

Сега, че знаете основите на създаването на скрипт в Linux и можете да напишете желания скрипт, например, за архивиране. Аз се опитах да се разгледат Баш скриптове от нулата. Поради това, не всички аспекти бяха разгледани. Може би ще се върна към тази тема в бъдеща статия.