Funtzioak nola erabili Bash-en

Nola erabili funtzioak Bash-en Unix shell oinarritutako POSIX bateragarria den ordenagailu lengoaia hau erabiliz. Hizkuntza gisa, bere funtzioa Linux komandoen interpretazioan datza, gure errepikapen prozesuak automatizatzea eta sistema eragilearen komandoetatik komandoak sortzea ahalbidetuz. Artikulu honetan berrikusiko dugu funtzioak bash nola erabili. Artikulua nola irakurtzea gomendatzen dut sortu zure scriptak bash erabiliz.

Proposatzen dugun gidoian, bash hizkuntza erabiltzen dugu fitxategi bat bilatzeko, bere izena jakinda. Horretarako bilatu komandoa baina aurretik aipatutako script horretan definitutako funtzioen laguntzarekin. Hizkuntza guztietan ez dagoen Bash-en berezitasun edo muga bat hartu behar duzu kontuan: funtzio bati deitzeko definitu behar da Aurrez.

Funtzioak zehaztu

Funtzioak definitzeko bi modu daude: funtzioaren deklarazioarekin edo gabe:

function nombre_funcion () 
{
    # codigo
}

edo beste hau, gero ikusiko duzuen moduan erabiltzen dudana.

nombre_funcion ()
{
    # codigo
}

halaber Bash-ek parametroak pasatzeko eta emaitzak itzultzeko metodo bat ere eskaintzen du. hurrengo artikuluetan ikusiko dugula.

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


Gidoien analisia

definizioak

Bash egiteko behar bezala burututako prozesu guztiek "0" kodea izan behar dute seinale gisa. 12. eta 13. lerroek kudeatzen dituzten errore-kodeak definitzen dituzte EXIT_OK arrakasta lortzeko y EXIT_BAD huts egitean irteteko.

15 eta 16 lerroetan, PATTERN eta DIRECTORY aldagaiei scriptaren izenaren ondoren komando lerroan agertzen diren lehenengo ($ 1) eta bigarren ($ 2) parametroak esleitzen zaizkie, geroago ikusiko dugun bezala exekutatzerakoan.

En 18. lerroa gure lehen funtzioa sortzen dugu. «Egilea» izeneko funtzioak gidoiaren egiletza "-a" argumentuarekin deitzen diogunean 50 ~ 54 lerroetan if ikus daitekeen moduan. Argudioa "-eta" 23. lerrotik «hurrengo lerroaren» sekuentzia bistaratzeko aukera ematen du «\ n» kodetuz.

Noparamamentzako deia (28 ~ 37 lerroak) script-a parametro barik deitzen denean gertatu behar diren gertaerak kudeatzeaz arduratzen da. Lerro-kode berrien artean behar bezala sartuta, gidoia bi parametrorekin exekutatu behar dela adierazten duen mezua erakusten dugu, orduan aukera bat (31 lerroa) erabiliko da irakurri Laguntza erakutsi nahi baduzu "S" edo "s" sakatzeko eskatzen dizu. 32. lerroan hitzez hitz esaten dugu: 'erantzuna baldin bada (hori aldagaian datorkigu $ ERANTZUNA) maiuskulak edo minuskulak dituen edozein karaktere ditu, orduan (33. lerroak) lerro huts bat agertzen da (34. lerroa) eta laguntza funtzioa gauzatzen du (23 ~ 26 lerroak).

Nodir funtzioa (39 ~ 42 lerroak) bilaketa egiten saiatzen den direktorioa ez dagoela antzematen dugunean gauzatuko da.

funtzionalitate

Honekin jada dugu beharrezko funtzio guztiak definitu 44. linean hasten den gure programa exekutatzeko, scriptak jasotzen duen parametroetako lehena "-h" den egiaztatuz, egia bada, laguntza funtzioa exekutatu eta amaiera normala adierazten duten irteerak.

PATTERN (15. parametroan deskribatutako lehen parametroa) "-a" bada, egileak aurreko paragrafoan "-h" aukerarako azaldutako mekanismo berbera erakusten du.

Linean 56 kontrolatuta dago ez ditugula bi parametro baino gutxiago jasoKasu honetan, noparams funtzioa exekutatzen da, orduan, 60. lerroaren if-en jakingo dugu bilaketa egin nahi dugun direktorioa badago, badago, lerro huts bat azalduko da bilatu komandoa bilaketa egin nahi dugun direktorioaren helbidearekin eta jarraian ereduarekin (bilatzen ari garen fitxategiaren izenaren hasiera) lerro huts berri bat eta erabiliz $ atera? gidoiaren irteera find-ek sortutako emaitzari ematen diogu. Baldintza bada direktorioen existentzia faltsua da (67. lerroa) nodir funtziora deitzen dugu eta amaiera anormal bat adieraziz irtengo gara.

Exekuzioa eta probak

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

En Bash-i buruzko artikuluak jarraituz mekanismoak ikusiko ditugu parametroak funtzioetan erabiltzeaNola ikusiko dugu ere itzultzeko datuak artikulatu beretik.

Espero dut eta espero dut mezu hau erabilgarria izan zaizula.


Artikuluaren edukia gure printzipioekin bat dator etika editoriala. Akats baten berri emateko egin klik hemen.

Iruzkin bat, utzi zurea

Utzi zure iruzkina

Zure helbide elektronikoa ez da argitaratuko. Beharrezko eremuak markatuta daude *

*

*

  1. Datuen arduraduna: Miguel Ángel Gatón
  2. Datuen xedea: SPAM kontrolatzea, iruzkinen kudeaketa.
  3. Legitimazioa: Zure baimena
  4. Datuen komunikazioa: datuak ez zaizkie hirugarrenei jakinaraziko legezko betebeharrez izan ezik.
  5. Datuak biltegiratzea: Occentus Networks-ek (EB) ostatatutako datu-basea
  6. Eskubideak: Edonoiz zure informazioa mugatu, berreskuratu eta ezabatu dezakezu.

  1.   josea esan zuen

    Kaixo,
    oso interesgarria eta oso argia.
    Ohar bat besterik ez; $ a falta da 68. lerroan EXIT_BAD aldagaiaren aurrean.
    Ziur ikasten jarraituko dut zure artikuluekin.