Sådan bruges funktioner i Bash

Sådan bruges funktioner i Bash ved hjælp af dette Unix-shell-baserede, POSIX-kompatible computersprog. Som sprog består dets funktion af fortolkningen af ​​Linux-kommandoer, der giver os mulighed for at automatisere vores gentagne processer og også oprette kommandoer fra operativsystemets kommandoer. I denne artikel vil vi gennemgå hvordan man bruger funktioner i bash. Jeg anbefaler at læse artiklen hvordan Opret dine egne scripts ved hjælp af bash.

I det script, vi foreslår, bruger vi Bash-sproget til at søge efter en fil, idet vi kender dens navn. Til dette vil vi bruge find kommando men ved hjælp af de funktioner, der tidligere er defineret i det nævnte script. Du skal tage højde for en ejendommelighed eller begrænsning af Bash, der ikke findes på alle sprog: For at kalde en funktion skal den defineres tidligere.

Definer funktioner

Der er to måder at definere funktioner på: med eller uden funktionserklæringen:

function nombre_funcion () 
{
    # codigo
}

eller denne anden, som jeg bruger som du vil se senere.

nombre_funcion ()
{
    # codigo
}

også Bash giver også en metode til at overføre parametre og returnere resultater. som vi vil se i fremtidige artikler.

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


Script analyse

definitioner

For bash hver proces, der gennemføres med succes, skal have koden "0" som et signal. Linie 12 og 13 definerer de håndterede fejlkoder EXIT_OK for succes y EXIT_BAD til afslutning ved fejl.

I linje 15 og 16 tildeles variablerne MØNSTER og DIRECTORY de første ($ 1) og anden ($ 2) parametre, der vises på kommandolinjen efter navnet på scriptet, som vi vil se senere, når vi udfører det.

I linje 18 vi opretter vores første funktion. Funktionen kaldet «forfatter» viser manuskriptforfatterskab når vi kalder det med "-a" -argumentet, som det kan ses i if på linjerne 50 ~ 54. Argumentet "-og" fra linje 23 gør det muligt at vise sekvensen af ​​«næste linje» ved at kode «\ n».

Opkaldet til noparams (linje 28 ~ 37) har ansvaret for at styre de begivenheder, der skal forekomme, når scriptet kaldes op uden parametre. Vi viser, korrekt lukket mellem nye linjekoder, en besked, der angiver, at scriptet skal udføres med to parametre, så vises en mulighed (linje 31) til brug læse Det beder dig om at trykke på "S" eller "s", hvis du vil vise hjælp. I linje 32 siger vi bogstaveligt: ​​'hvis svaret (der kommer til os i variablen $ SVAR) indeholder et hvilket som helst af de tegn, der er store eller små bogstaver ', viser derefter (linje 33) en tom linje (linje 34) og udfører hjælpefunktionen (linje 23 ~ 26).

Funktionen nodir (linie 39 ~ 42) udføres, når vi registrerer, at den mappe, hvor søgningen forsøges, ikke findes.

funktionalitet

Med dette har vi allerede definerede alle nødvendige funktioner for at udføre vores program, som faktisk starter på linje 44, kontrollere om den første af parametrene som scriptet modtager er "-h", hvis det er sandt, udfør hjælpefunktionen og udgange, der angiver normal afslutning.

Hvis MØNSTER (første parameter som beskrevet i linje 15) er "-a", vises forfatteren ved at følge den samme mekanisme, der er forklaret i det foregående afsnit for "-h" -indstillingen.

På linjen 56 kontrolleres det, at vi ikke har modtaget mindre end to parametreI dette tilfælde udføres noparams-funktionen, så i if-linjen 60 finder vi det ud hvis den mappe, som vi vil søge på, findes, hvis den findes, vises en tom linje, find kommando med adressen på det bibliotek, som vi ønsker at udføre søgningen efterfulgt af mønsteret (begyndelsen på navnet på den fil, vi leder efter) en ny tom linje og ved hjælp af afslutte $? vi overlader produktionen af ​​vores script til resultatet produceret af find. I tilfælde af tilstanden af katalog eksistens er falsk (linje 67) ringer vi til nodir-funktionen og vi går ud, hvilket indikerer en unormal ophør.

Udførelse og test

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

En følgende artikler om Bash vi vil se mekanismerne for bruge parametre i funktionerVi vil også se, hvordan vi gør det artikulere returdata af dem.

Jeg håber og håber, at dette indlæg har været nyttigt for dig.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   josea sagde han

    Hej,
    meget interessant og meget tydelig.
    Bare en note; en $ mangler på linje 68 foran variablen EXIT_BAD.
    Jeg vil fortsætte med at lære sikkert med dine artikler.