Како се користе функције у Басху

Како се користе функције у Басх-у помоћу овог рачунарског језика који је заснован на Уник-овој љусци, у складу са ПОСИКС-ом. Као језик, његова функција се састоји од интерпретације Линук наредби, што нам омогућава аутоматизацију наших понављајућих процеса и такође креирање наредби од наредби оперативног система. У овом чланку ћемо прегледати како користити функције у басх-у. Препоручујем вам да прочитате чланак како креирајте сопствене скрипте користећи басх.

У скрипти коју предлажемо користимо језик Басх за тражење датотеке, знајући њено име. За ово ћемо користити финд цомманд али уз помоћ функција претходно дефинисаних у поменутој скрипти. Морате узети у обзир посебност или ограничење Басха које није присутно на свим језицима: да би се позвала функција мора бити дефинисана раније.

Дефинисати функције

Постоје два начина за дефинисање функција: са или без декларације функције:

function nombre_funcion () 
{
    # codigo
}

или овај други, који користим као што ћете видети касније.

nombre_funcion ()
{
    # codigo
}

Такође Басх такође пружа метод за прослеђивање параметара и враћање резултата. што ћемо видети у будућим чланцима.

#!/usr/bin/env bash

# ~/.bin/encontrar
# encuentra archivos a partir de la descripción de su nombre en un directorio específico
#
# Por Pedro Ruiz Hidalgo
# version 1.0.0
# Copyright © enero 2017
#
#

EXIT_OK=0
EXIT_BAD=66

PATRON=$1
DIRECTORIO=$2

autor ()
{
 echo -e "\nPedro Ruiz Hidalgo @petrorum. Copyright © 2017\n"
}

ayuda ()
{
 echo -e "\nencontrar [PATRON] [DIRECTORIO]\n"
} 

noparams ()
{
 echo -e "\nSon necesarios dos parámetros\nencontrar -h para ayuda\n"
 read -p "¿Quieres ver la ayuda? (S|s)" -n 1 -r
 if [[ $REPLY =~ ^[Ss]$ ]];
    then
       echo ""
       ayuda
 fi
}

nodir ()
{
 echo -e "\nDirectorio no Existe\n"
}

if [[ $PATRON == "-h" ]];
then 
 ayuda
 exit $EXIT_OK
fi

if [[ $PATRON == "-a" ]];
then 
 autor
 exit $EXIT_OK
fi

if [ $# -lt 2 ];
then
 noparams
else
 if [ -d $DIRECTORIO ];
 then
 echo ""
 find $DIRECTORIO -name $PATRON*
 echo ""
 exit $?
 else 
 nodir 
 exit EXIT_BAD
 fi
fi


Анализа скрипти

Дефиниције

За басх сваки процес који је успешно завршен мора имати сигнал "0". Редови 12 и 13 дефинишу кодове грешака којима се рукује ЕКСИТ_ОК ​​за успех y ЕКСИТ_БАД за излаз при неуспеху.

У редовима 15 и 16 променљивим ПАТТЕРН и ДИРЕЦТОРИ додељују се први ($ 1) и други ($ 2) параметри који се појављују у командној линији након имена скрипте, као што ћемо видети касније када је извршимо.

У ред 18 креирамо своју прву функцију. Функција названа «аутор» приказује ауторство скрипте када га зовемо аргументом "-а" као што можете видети у иф на линијама 50 ~ 54. Аргумент "-и" од 23. реда омогућава приказивање низа «следећег реда» кодирањем «\ н».

Позив нопарамс (редови 28 ~ 37) задужен је за управљање догађајима који се морају догодити када се скрипта позове без икаквих параметара. Показујемо, правилно затворену између нових кодова линија, поруку која указује да се скрипта мора извршити са два параметра, а затим је приказана опција (линија 31) за употребу читати Тражи се да притиснете „С“ или „с“ у случају да желите да покажете помоћ. У 32. реду дословно кажемо: „ако је одговор (који нам долази у променљивој $ ОДГОВОР) садржи било који од великих или малих слова ', а затим (ред 33) приказује празан ред (ред 34) и извршава функцију помоћи (редови 23 ~ 26).

Нодир функција (редови 39 ~ 42) извршиће се када откријемо да директоријум у којем се покушава потрага не постоји.

Функционалност

Са овим већ имамо дефинисао све потребне функције да извршимо наш програм, који заправо започиње на линији 44, проверавајући да ли је први од параметара које скрипта прима „-х“, ако је тачно, извршимо функцију помоћи и излази који указују на нормалан завршетак.

Ако је ОБРАЗАЦ (први параметар како је описан у реду 15) „-а“, аутор се приказује према истом механизму објашњеном у претходном пасусу за опцију „-х“.

На линији 56 контролише се да су до нас дошла мање од два параметраУ овом случају се извршава функција нопарамс, онда у иф из реда 60 то сазнајемо ако постоји директоријум на коме желимо да извршимо претрагу, ако постоји, приказује се празан ред, финд цомманд са адресом директорија на којем желимо да извршимо претрагу праћену узорком (почетак имена датотеке коју тражимо) нови празан ред и помоћу излаз $? излаз наше скрипте поверавамо резултату који је пронашао финд. У случају да је стање постојање директоријума је нетачно (линија 67) упућујемо позив функцији нодир и излазимо што указује на ненормалан прекид.

Извршење и испитивање

$ encontrar
$ encontrar -a
$ encontrar -h
$ encontrar index aljflaskjf #directorio no existe
$ encontrar index public_html
$

En следећи чланци о Башу видећемо механизме за користите параметре у функцијамаВидећемо и како артикулисати повратне податке од истог.

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


Коментар, остави свој

Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.

  1.   јосеа дијо

    Здраво,
    врло занимљиво и врло јасно.
    Само напомена; на линији 68 испред променљиве ЕКСИТ_БАД недостаје $.
    Наставићу да учим сигурно са вашим чланцима.