Kuidas kasutada funktsioone Bashis

Bashi funktsioonide kasutamine selle Unixi kestapõhise ja POSIX-iga ühilduva arvutikeele abil. Keelena koosneb selle funktsioon Linuxi käskude tõlgendamisest, mis võimaldab meil automatiseerida oma korduvaid protsesse ja luua käske ka operatsioonisüsteemi käskudest. Selles artiklis vaatame üle kuidas kasutada funktsioone bashis. Soovitan lugeda artiklit kuidas looge oma skriptid bashi abil.

Meie pakutud skriptis kasutame faili otsimiseks bashi keelt, teades selle nime. Selleks kasutame leidke käsk vaid eelnevalt skriptis määratletud funktsioonide abil. Peate arvestama Bashi eripära või piirangutega, mida pole kõigis keeltes: funktsiooni kutsumiseks tuleb see määratleda varem.

Määrake rollid

Funktsioonide määratlemiseks on kaks võimalust: funktsioonideklaratsiooniga või ilma:

function nombre_funcion () 
{
    # codigo
}

või see teine, mida ma kasutan, nagu näete hiljem.

nombre_funcion ()
{
    # codigo
}

Ka Bash pakub ka meetodit parameetrite edastamiseks ja tulemuste tagastamiseks. mida näeme järgmistes artiklites.

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


Skripti analüüs

Mõisted

Bashile igal edukalt lõpule viidaval protsessil peab olema signaaliks kood "0". Ridadel 12 ja 13 määratletakse käsitletavad veakoodid EXIT_OK edu saavutamiseks y EXIT_BAD nurjumisel väljumiseks.

Ridadel 15 ja 16 määratakse PATTERN ja DIRECTORY muutujate jaoks esimene ($ 1) ja teine ​​($ 2) parameeter, mis kuvatakse käsureal pärast skripti nime, nagu näeme hiljem selle täitmisel.

Aastal 18. rida loome oma esimese funktsiooni. Funktsioon nimega "autor" kuvab stsenaariumi autorlus kui seda nimetame argumendiga "-a", nagu on näha if-ridadel 50 ~ 54. Argument "ja" alates 23. reast võimaldab kuvada «järgmise rea» järjestuse kodeerides «\ n».

Kõne noparamidele (read 28 ~ 37) vastutab sündmuste haldamise eest, mis peavad toimuma, kui skript kutsutakse ilma parameetriteta. Uute rea koodide vahele õigesti suletuna kuvatakse teade, mis näitab, et skript tuleb käivitada kahe parameetriga, seejärel kuvatakse suvand (rida 31) lugenud Juhuks, kui soovite näidata abi, palutakse teil vajutada "S" või "s". Reas 32 ütleme sõna otseses mõttes: "kui vastus (see tuleb meile muutujas $ VASTUS) sisaldab suvalisi tähti, mis tähistavad suurtähte või väiketähti ”, seejärel näitab (rida 33) tühja rida (rida 34) ja täidab abifunktsiooni (read 23–26).

Funktsioon nodir (read 39 ~ 42) käivitatakse, kui tuvastame, et kataloogi, kus otsitakse, pole olemas.

funktsionaalsus

Sellega meil juba on määratlesid kõik vajalikud funktsioonid käivitada meie programm, mis tegelikult algab real 44, kontrollides, kas skripti saanud parameetritest esimene on "-h", kui see on tõsi, käivitage abifunktsioon ja väljumist, mis näitab normaalset lõpetamist.

Kui PATTERN (esimene parameeter, mida on kirjeldatud real 15) on "-a", kuvatakse autor järgides sama mehhanismi, mida on eelmises lõigus selgitatud valiku "-h" kohta.

Liinil 56 kontrollitakse, et me pole saanud alla kahe parameetriSellisel juhul käivitatakse funktsioon noparams, seejärel saame 60. rea if-st teada kui kataloog, milles soovime otsingu teha, on olemas, kui see on olemas, kuvatakse tühi rida leidke käsk kataloogi aadressiga, kus soovime otsingu teha, millele järgneb muster (otsitava faili nime algus) uus tühi rida ja väljuda $? usaldame oma skripti väljundi leidu tulemusele. Juhul kui kataloogi olemasolu on vale (rida 67) kutsume funktsiooni nodir ja väljume ebanormaalsest lõpetamisest.

Täitmine ja testimine

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

En järgmised artiklid Bashi kohta näeme mehhanisme kasutage funktsioonides parameetreidNäeme ka, kuidas tagastamise andmete artikuleerimine samast.

Loodan ja loodan, et see postitus on teile kasulik olnud.


Artikli sisu järgib meie põhimõtteid toimetuse eetika. Veast teatamiseks klõpsake nuppu siin.

Kommentaar, jätke oma

Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata.

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   josea DIJO

    Tere,
    väga huvitav ja väga selge.
    Lihtsalt märkus; muutuja EXIT_BAD ees oleval real 68 puudub a $.
    Jätkan teie artiklitega kindlalt õppimist.