Si të përdorni funksionet në bash

Si të përdorni funksionet në Bash duke përdorur këtë gjuhë kompjuteri të bazuar në POSIX në bazë të Unix. Si gjuhë, funksioni i saj konsiston në interpretimin e komandave Linux, duke na lejuar të automatizojmë proceset tona përsëritëse dhe gjithashtu të krijojmë komanda nga komandat e sistemit operativ. Në këtë artikull ne do të shqyrtojmë si të përdoren funksionet në bash. Unë rekomandoj të lexoni artikullin si krijoni skriptet tuaja duke përdorur bash.

Në skenarin që ne propozojmë, ne përdorim gjuhën Bash për të kërkuar një skedar, duke ditur emrin e saj. Për këtë ne do të përdorim gjej komandën por me ndihmën e funksioneve të përcaktuara më parë në skenarin e përmendur. Ju duhet të merrni parasysh një veçori ose kufizim të Bash-it që nuk është i pranishëm në të gjitha gjuhët: për të thirrur një funksion duhet të përcaktohet më parë.

Përcaktoni funksionet

Ekzistojnë dy mënyra për të përcaktuar funksionet: me ose pa deklarimin e funksionit:

function nombre_funcion () 
{
    # codigo
}

ose ky tjetri, i cili është ai që përdor siç do ta shihni më vonë.

nombre_funcion ()
{
    # codigo
}

edhe Bash gjithashtu siguron një metodë për të kaluar parametrat dhe për të kthyer rezultatet. që do t’i shohim në artikujt e ardhshëm.

#!/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


Analiza e skenarit

përkufizimet

Për bash çdo proces i përfunduar me sukses duhet të ketë si sinjal kodin "0". Linjat 12 dhe 13 përcaktojnë kodet e gabimeve të trajtuara EXIT_OK për sukses y EXIT_BAD për dalje në dështim.

Në rreshtat 15 dhe 16, variablat PATTERN dhe DIREKTORI caktohen parametrat e parë ($ 1) dhe të dytë ($ 2) që shfaqen në rreshtin e komandës pas emrit të skenarit, siç do ta shohim më vonë kur ta ekzekutojmë.

rreshti 18 ne krijojmë funksionin tonë të parë. Funksioni i quajtur «autor» tregon autorësia e skenarit kur e quajmë me argumentin "-a" siç mund ta shihni në rreshtat if 50 54 ~ XNUMX. Argumenti "-dhe" nga linja 23 lejon të shfaqë sekuencën e «rreshtit tjetër» duke koduar «\ n».

Thirrja për noparams (linjat 28 ~ 37) është përgjegjëse për menaxhimin e ngjarjeve që duhet të ndodhin kur skenari thirret pa ndonjë parametër. Ne tregojmë të mbyllur siç duhet midis kodeve të reja të linjës, një mesazh që tregon se skenari duhet të ekzekutohet me dy parametra, atëherë një opsion (rreshti 31) tregohet për të përdorur lexoj Ju nxit të shtypni "S" ose "s" në rast se doni të tregoni ndihmë. Në rreshtin 32 ne fjalë për fjalë themi: 'nëse përgjigjja (që na vjen në ndryshore $ REPLY) përmban cilindo prej karaktereve që e madhe ose e vogël ', atëherë (rreshti 33) tregon një vijë të zbrazët (rreshti 34) dhe ekzekuton funksionin e ndihmës (linjat 23 ~ 26).

Funksioni nodir (linjat 39 ~ 42) do të ekzekutohet kur zbulojmë se drejtoria ku po përpiqet të kërkojë nuk ekziston.

funksionalitetin

Me këtë tashmë kemi përcaktoi të gjitha funksionet e nevojshme për të ekzekutuar programin tonë, i cili fillon në të vërtetë në rreshtin 44, duke kontrolluar nëse i pari nga parametrat që merr skenari është "-h", nëse është i vërtetë, ekzekutoni funksionin e ndihmës dhe daljet që tregojnë përfundimin normal.

Nëse PATTERN (parametri i parë siç përshkruhet në rreshtin 15) është "-a", autori shfaqet duke ndjekur të njëjtin mekanizëm të shpjeguar në paragrafin e mëparshëm për opsionin "-h".

Në linjë 56 kontrollohet që nuk kemi marrë më pak se dy parametraNë këtë rast, ekzekutohet funksioni noparams, atëherë, nëse e linjës 60 e zbulojmë nëse drejtoria në të cilën duam të bëjmë kërkimin ekziston, nëse ekziston, tregohet një vijë e zbrazët, gjej komandën me adresën e direktorisë në të cilën duam të kryejmë kërkimin e ndjekur nga modeli (fillimi i emrit të skedarit që po kërkojmë) një vijë të re bosh dhe duke përdorur dilni nga $? ne ia besojmë daljen e shkrimit tonë rezultatit të prodhuar nga find. Në rast se gjendja e ekzistenca e direktorisë është false (rreshti 67) ne bëjmë një thirrje në funksionin nodir dhe ne dalim duke treguar një përfundim anormal.

Ekzekutimi dhe testimi

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

En artikujt vijues në lidhje me Bash do të shohim mekanizmat për përdorin parametrat në funksioneNe gjithashtu do të shohim se si të artikulojnë të dhënat e kthimit nga e njëjta.

Shpresoj dhe shpresoj që ky postim të ketë qenë i dobishëm për ju.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   josea dijo

    Përshëndetje,
    shumë interesante dhe shumë e qartë.
    Vetëm një shënim; një $ mungon në rreshtin 68 përpara ndryshores EXIT_BAD.
    Unë do të vazhdoj të mësoj me siguri me artikujt tuaj.