Kako uporabljati funkcije v Bashu

Kako uporabljati funkcije v storitvi Bash s tem računalniškim jezikom, ki temelji na lupini Unixa in je v skladu s sistemom POSIX. Kot jezik je njegova funkcija sestavljena iz interpretacije ukazov za Linux, kar nam omogoča avtomatizacijo ponavljajočih se procesov in ustvarjanje ukazov iz ukazov operacijskega sistema. V tem članku bomo pregledali kako uporabljati funkcije v. Priporočam, da preberete članek kako ustvarite lastne skripte z uporabo bash.

V skriptu, ki ga predlagamo, uporabljamo jezik Bash za iskanje datoteke, pri čemer poznamo njeno ime. Za to bomo uporabili najti ukaz vendar s pomočjo funkcij, ki so bile prej definirane v omenjenem skriptu. Upoštevati morate posebnost ali omejitev Basha, ki ni prisotna v vseh jezikih: če želite poklicati funkcijo, jo je treba definirati prej.

Določite funkcije

Obstajata dva načina za določanje funkcij: z ali brez izjave funkcije:

function nombre_funcion () 
{
    # codigo
}

ali tega drugega, ki ga uporabljam, kot boste videli kasneje.

nombre_funcion ()
{
    # codigo
}

Tudi Bash ponuja tudi metodo za posredovanje parametrov in vrnitev rezultatov. kar bomo videli v prihodnjih člankih.

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

Opredelitve

Za bash vsak postopek, ki se uspešno zaključi, mora imeti kot signal kodo "0". Vrstici 12 in 13 definirata obravnavane kode napak EXIT_OK za uspeh y EXIT_BAD za izhod ob okvari.

V vrsticah 15 in 16 sta spremenljivkama VZOREC in DIRECTORY dodeljena prvi ($ 1) in drugi ($ 2) parametra, ki se pojavita v ukazni vrstici za imenom skripta, kot bomo videli kasneje, ko ga bomo izvedli.

V 18. vrstica ustvarimo svojo prvo funkcijo. Funkcija, imenovana «avtor», prikaže avtorstvo scenarija ko ga pokličemo z argumentom "-a", kot lahko vidite v vrstici if v vrsticah 50 ~ 54. Argument "-and" od vrstice 23 omogoča prikaz zaporedja «naslednje vrstice» s kodiranjem «\ n».

Klic noparams (vrstice 28 ~ 37) je odgovoren za upravljanje dogodkov, ki se morajo zgoditi, ko je skript poklican brez kakršnih koli parametrov. Prikaže se, pravilno zaprto med novimi kodami vrstic, sporočilo, da je treba skript izvesti z dvema parametroma, nato pa je prikazana možnost (vrstica 31) za uporabo preberite V primeru, da želite prikazati pomoč, morate pritisniti "S" ali "s". V vrstici 32 dobesedno rečemo: "če je odgovor (ki pride do nas v spremenljivki $ ODGOVOR) vsebuje katerega koli znaka, ki je velik ali majhen ', nato (vrstica 33) prikaže prazno vrstico (vrstica 34) in izvede funkcijo pomoči (vrstice 23 ~ 26).

Funkcija nodir (vrstice 39 ~ 42) se bo izvedla, ko bomo zaznali, da imenik, v katerem se išče iskanje, ne obstaja.

Funkcionalnost

S tem že imamo definiral vse potrebne funkcije za zagon našega programa, ki se dejansko začne v vrstici 44, preverjanje, ali je prvi od parametrov, ki jih prejme skript, "-h", če je res, zaženite funkcijo pomoči in izhodi, ki kažejo na normalno prekinitev.

Če je VZOREC (prvi parameter, kot je opisan v vrstici 15), "-a", se avtor prikaže po enakem mehanizmu, kot je razložen v prejšnjem odstavku za možnost "-h".

Na zvezi 56 je nadzorovano, da nismo prejeli manj kot dveh parametrovV tem primeru se izvede funkcija noparams, nato pa v vrstici 60 to ugotovimo če obstaja imenik, v katerem želimo iskati, če obstaja, je prikazana prazna vrstica, najti ukaz z naslovom imenika, v katerem želimo izvesti iskanje, ki mu sledi vzorec (začetek imena datoteke, ki jo iščemo), nova prazna vrstica in s pomočjo zapustiti $? rezultat našega skripta zaupamo rezultatu, ki ga je ustvaril find. V primeru, da je stanje obstoj imenika je napačen (vrstica 67) pokličemo funkcijo nodir in izstopimo, kar kaže na nenormalno prekinitev.

Izvedba in testiranje

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

En naslednjih člankov o Bashu videli bomo mehanizme za uporaba parametrov v funkcijahBomo videli tudi kako artikulirani podatki o vrnitvi od istega.

Upam in upam, da je bila ta objava koristna za vas.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

      josea je dejal

    Pozdravljeni,
    zelo zanimivo in zelo jasno.
    Samo opomba; v vrstici 68 pred spremenljivko EXIT_BAD manjka $.
    Z vašimi članki se bom še naprej učil zagotovo.