Праграмаванне ў bash - частка 3

да бяспечны нашы паняцці Мы даведаемся 2 вельмі карысныя інструменты для праграмавання, якія выдатна працуюць у Bash. Навучыцеся ствараць функцыі і вызначыць трубы спачатку можа здацца складаным, але потым мы ўбачым велізарнае ўтыліта што яны нам забяспечваюць.

Трубы

Канкрэтна, і не прымаючы занадта шмат абаротаў, канвеер - гэта метад, які дазваляе накіроўваць выхад аднаго працэсу як уваход іншага, што дазваляе шэраг пераваг, такіх як памяншэнне радкоў кода, абыходжанне са зменнымі для захавання вынікаў і паляпшэнне эфектыўнасць сцэнарыя.

Труба звычайна распазнаецца, маючы сімвал | што дазваляе аб'ядноўваць выразы; Хоць ён выкарыстоўваецца па змаўчанні, існуюць і іншыя спосабы стварэння труб.

Прыклад: надрукаваць апошнія паведамленні ядра

#dmesg дазваляе праглядаць апошнія паведамленні ядра і загружаныя драйверы # падчас загрузкі сістэмы; tail друкуе апошнія часткі файла альбо #command

dmesg | хваста

Нягледзячы на ​​тое, што яны могуць ускладняцца настолькі, наколькі мы хочам, асноўная структура канвеера дазваляе выкарыстоўваць вынік адной каманды як увод для наступнай, якая можа даць увод новай каманды, калі мы працягваем дадаваць паслядоўныя трубы.

funciones

Функцыі - гэта набор выказванняў, якія згрупаваны разам, каб іх можна было выканаць некалькі разоў без неабходнасці іх перапісваць. Гэта эквівалентна думцы, што калі мы навучымся гатаваць той ці іншы від ежы, мы будзем пісаць яе рэцэпт на аркушы, і кожны раз, калі мы хочам рыхтаваць ежу, мы звяртаемся да рэцэпта, а не перапісваем новы ліст з тым самым рэцэптам.

Мабыць, самае галоўнае ў функцыях - магчымасць перадачы параметраў, дадзеных, якія яны будуць выкарыстоўваць для іх апрацоўкі і атрымання вываду. Яго структура выглядае наступным чынам:

функцыя function-name {

працэсы

}

Прыклад: функцыя, якая паказвае службы, якія працуюць па пратаколе tcp. Мы таксама можам бачыць, як прымяняць больш труб.

# Мы вызначаем імя функцыі, яно можа падабацца нам.

функцыя services_tcp {

#cat аб'ядноўвае і адлюстроўвае змесціва папкі / etc / services, якая змяшчае ўсе службы з адпаведнымі партамі.

# першы grep бярэ спіс і выдаляе каментарыі, а –v мы інвертуем вынік

# другі grep паказвае толькі тыя, якія звязаны з tcp

кошка / і г.д. / паслугі | grep –v "^ #" | grep tcp

}

Калі нам трэба выканаць гэтую функцыю, нам проста трэба назваць яе імя:

tcp_services

У гэтым выпадку ён працуе без параметраў; У выпадку, калі яны ёсць, мы павінны дадаць іх, каб функцыя працавала належным чынам, інакш функцыя не будзе працаваць належным чынам. Выкарыстанне return дазваляе функцыі вярнуць значэнне ў выніку працэсу.

Прыклад: функцыя з уваходнымі параметрамі, якая вылічвае суму 2 лікаў.

#! / Bin / Баш
функцыйная сума ()
{
# пры дапамозе мы можам выканаць аперацыю ўнутры двукоссяў
хай "вынік = $ 1 + $ 2"

#return дазваляе вярнуць цэлае значэнне. Пасля таго, як зварот будзе выкананы, значэнне будзе ўнесена ўнутр зменнай $?
вярнуць $ вынік;
}
 
# Функцыя sum выклікаецца, і мы перадаем 2 ўваходныя параметры.

дадаць 2 3

#друкуе кошт $? з рэхам ацэнкі фактычнага значэння зменнай у двукоссях
echo -e "Вынік = $?";

Дзякуй Хуану Карласу Ортысу!


Змест артыкула адпавядае нашым прынцыпам рэдакцыйная этыка. Каб паведаміць пра памылку, націсніце тут.

7 каментарыяў, пакіньце свой

Пакіньце свой каментар

Ваш электронны адрас не будзе апублікаваны.

*

*

  1. Адказны за дадзеныя: Мігель Анхель Гатон
  2. Прызначэнне дадзеных: Кантроль спаму, кіраванне каментарыямі.
  3. Легітымнасць: ваша згода
  4. Перадача дадзеных: Дадзеныя не будуць перададзены трэцім асобам, за выключэннем юрыдычных абавязкаў.
  5. Захоўванне дадзеных: База дадзеных, размешчаная Occentus Networks (ЕС)
  6. Правы: у любы час вы можаце абмежаваць, аднавіць і выдаліць сваю інфармацыю.

  1.   Паказальнік Nill сказаў

    Я не ўпэўнены, але аператар return функцый служыць толькі для вяртання цэлага ліку ад 0 да 255, напрыклад, кодаў памылак "выхаду", звычайна 0, калі ўсё ў парадку, і іншая лічба для астатніх выпадкаў. Хоць у прыкладзе гэта працуе, я не думаю, што гэта добрая практыка вяртаць вынік з вяртаннем.
    Там я кажу глупства га! вока! ха!

  2.   Джуанк сказаў

    Праўда пакінула ў мяне сумневы. У любым выпадку, каб пазбегнуць праблем з функцыямі, мы можам замяніць return на рэха ў тым выпадку, калі функцыя імкнецца вярнуць альбо надрукаваць значэнне або радок.

  3.   Авель С. Гара Вялікая сказаў

    Праўда, для вырашэння гэтага пытання вы можаце выкарыстоўваць каманду bc, у функцыі сумавання можна выкарыстоўваць: result = `echo $ 1 + $ 2 | да н.э. -ql`

  4.   Luis Miguel сказаў

    добра,

    Я хацеў бы ведаць, дзе я магу захаваць файлы bash для шырокага запуску сістэмы, і гэта не каталог bin, але можа быць домам для рэзервовага капіравання.

    Дзякуй і з павагай.

  5.   Хаакін сказаў

    Вялікі дзякуй, я пачынаю са сцэнарыяў, і праўда, гэта вельмі карысна, вы вельмі добра дзяліцеся сваімі ведамі!
    прывітанне

    1.    давайце выкарыстоўваць Linux сказаў

      Дзякуй! Абдымі!
      Пабла

  6.   Cristhian сказаў

    Сінтаксічная памылка: "(" нечакана
    Я атрымліваю памылку пры спробе запусціць прыклад, я скапіяваў яго сапраўды гэтак жа

    Што можа быць? я на Ubuntu 14.10