Kaip naudotis „Bash“ funkcijomis

Kaip naudoti „Bash“ funkcijas naudojant šią „Unix“ apvalkalu pagrįstą ir POSIX suderinamą kompiuterio kalbą. Kaip kalbą, jos funkciją sudaro „Linux“ komandų aiškinimas, leidžiantis automatizuoti pasikartojančius procesus ir taip pat kurti komandas iš operacinės sistemos komandų. Šiame straipsnyje mes apžvelgsime kaip naudoti funkcijas bash. Aš rekomenduoju perskaityti straipsnį kaip susikurkite savo scenarijus naudodami „bash“.

Siūlomame scenarijuje failo paieškai naudojame Bash kalbą, žinodami jo pavadinimą. Tam mes naudosime rasti komandą bet anksčiau minėtame scenarijuje apibrėžtų funkcijų pagalba. Turite atsižvelgti į „Bash“ ypatumą ar apribojimą, kuris nėra visose kalbose: norint iškviesti funkciją, ji turi būti apibrėžta anksčiau.

Apibrėžkite funkcijas

Yra du būdai apibrėžti funkcijas: su funkcijų deklaracija arba be jos:

function nombre_funcion () 
{
    # codigo
}

arba šis kitas, kurį naudoju, kaip pamatysite vėliau.

nombre_funcion ()
{
    # codigo
}

Taip pat Bashas taip pat pateikia parametrų perdavimo ir rezultatų grąžinimo metodą. kurį pamatysime būsimuose straipsniuose.

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


Scenarijaus analizė

Apibrėžimai

Dėl bash Kiekvienas sėkmingai užbaigtas procesas turi būti kodas „0“ kaip signalas. 12 ir 13 eilutėse nurodomi tvarkomi klaidų kodai EXIT_OK už sėkmę y EXIT_BAD, jei norite išeiti nesėkmės atveju.

15 ir 16 eilutėse PATTERN ir DIRECTORY kintamiesiems priskiriami pirmieji ($ 1) ir antrieji ($ 2) parametrai, kurie atsiranda komandinėje eilutėje po scenarijaus pavadinimo, kaip pamatysime vėliau, kai jį vykdysime.

Į 18 eilutė mes sukuriame savo pirmąją funkciją. Funkcija, vadinama «autoriumi», rodo scenarijaus autorystė kai jį vadiname argumentu „-a“, kaip matote if ~ 50 ~ 54 eilutėse. Argumentas „ir“ iš 23 eilutės leidžia parodyti «kitos eilutės» seką užkoduojant «\ n».

Skambinimas į „noparams“ (28–37 eilutės) yra atsakingas už įvykių, kurie turi įvykti iškvietus scenarijų be jokių parametrų, valdymą. Parodome tinkamai uždarytą tarp naujų eilučių kodų pranešimą, nurodantį, kad scenarijus turi būti vykdomas dviem parametrais, tada parodyta parinktis (31 eilutė) skaityti Jei norite parodyti pagalbą, raginama paspausti „S“ arba „s“. 32 eilutėje mes pažodžiui sakome: „jei atsakymas (kuris gaunamas kintamajame $ ATSAKYTI) yra bet kuris simbolis, kurį sudaro didžiosios arba mažosios raidės “, tada (33 eilutė) rodo tuščią eilutę (34 eilutė) ir vykdo pagalbos funkciją (23–26 eilutės).

„Nodir“ funkcija (39–42 eilutės) bus vykdoma, kai nustatysime, kad katalogo, kuriame bandoma ieškoti, nėra.

Funkcionalumas

Tai mes jau turime apibrėžė visas būtinas funkcijas vykdyti mūsų programą, kuri iš tikrųjų prasideda 44 eilutėje, patikrindama, ar pirmasis parametras, kurį gauna scenarijus, yra „-h“, jei tai tiesa, vykdykite pagalbos funkciją ir išėjimai rodo įprastą nutraukimą.

Jei PATTERN (pirmasis parametras, aprašytas 15 eilutėje) yra „-a“, autorius rodomas pagal tą patį mechanizmą, kuris paaiškintas ankstesnėje pastraipoje „-h“ parinkčiai.

Ant linijos 56 kontroliuojama, kad negavome mažiau nei dviejų parametrųŠiuo atveju vykdoma „noparams“ funkcija, tada sužinosime „if“ 60 eilutėje jei yra katalogas, kuriame norime atlikti paiešką, jei jis egzistuoja, rodoma tuščia eilutė rasti komandą nurodant katalogo, kuriame norime atlikti paiešką, adresą, po kurio rašoma (ieškomo failo pavadinimo pradžia) nauja tuščia eilutė ir naudojant išeiti iš $? mes patikime savo scenarijaus išvestį rezultatui, kurį sukuria „find“. Jei būklė katalogo egzistavimas yra klaidingas (67 eilutė) iškviečiame nodir funkciją ir išeiname nurodydami nenormalų nutraukimą.

Vykdymas ir testavimas

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

En sekantys straipsniai apie Bashą pamatysime mechanizmus naudoti parametrus funkcijoseTaip pat pamatysime, kaip suformuluoti grąžinimo duomenis iš to paties.

Tikiuosi ir tikiuosi, kad šis įrašas jums buvo naudingas.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   josea sakė

    Sveiki,
    labai įdomu ir labai aišku.
    Tiesiog pastaba; $ 68 trūksta XNUMX eilutėje prieš kintamąjį EXIT_BAD.
    Toliau tikrai mokysiuosi su jūsų straipsniais.