Hvordan bruke funksjoner i Bash

Hvordan bruke funksjoner i Bash ved hjelp av dette Unix skallbaserte, POSIX-kompatible dataspråket. Som et språk består funksjonen av tolkningen av Linux-kommandoer, slik at vi kan automatisere våre repeterende prosesser og også lage kommandoer fra operativsystemkommandoene. I denne artikkelen vil vi gjennomgå hvordan du bruker funksjoner i bash. Jeg anbefaler å lese artikkelen hvordan lag dine egne skript ved hjelp av bash.

I skriptet vi foreslår, bruker vi Bash-språket til å søke etter en fil, og vite navnet. For dette vil vi bruke finn kommando men ved hjelp av funksjonene som tidligere er definert i nevnte skript. Du må ta hensyn til en egenart eller begrensning av Bash som ikke er tilstede på alle språk: for å kalle en funksjon må den defineres tidligere.

Definer funksjoner

Det er to måter å definere funksjoner på: med eller uten funksjonserklæringen:

function nombre_funcion () 
{
    # codigo
}

eller denne andre, som er den jeg bruker som du vil se senere.

nombre_funcion ()
{
    # codigo
}

også Bash gir også en metode for å overføre parametere 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


Skriptanalyse

definiciones

For bash hver prosess fullført vellykket må ha koden "0" som et signal. Linje 12 og 13 definerer feilkodene som håndteres EXIT_OK for suksess y EXIT_BAD for avslutning ved feil.

I linje 15 og 16 tildeles variablene MØNSTER og DIRECTORY de første ($ 1) og andre ($ 2) parametrene som vises på kommandolinjen etter navnet på skriptet, som vi vil se senere når vi utfører det.

I linje 18 vi lager vår første funksjon. Funksjonen kalt «forfatter» viser manusforfatterskap når vi kaller det med "-a" -argumentet som du kan se i if på linjene 50 ~ 54. Argumentet "-og" fra linje 23 tillater å vise sekvensen av «neste linje» ved å kode «\ n».

Anropet til noparams (linje 28 ~ 37) har ansvaret for å administrere hendelsene som må inntreffe når skriptet blir ringt uten parametere. Vi viser, riktig lukket mellom nye linjekoder, en melding som indikerer at skriptet må kjøres med to parametere, så vises et alternativ (linje 31) å bruke lese Den ber deg om å trykke "S" eller "s" i tilfelle du vil vise hjelp. I linje 32 sier vi bokstavelig talt: 'hvis svaret (som kommer til oss i variabelen $ SVAR) inneholder noen av tegnene som store eller små bokstaver ', viser deretter (linje 33) en tom linje (linje 34) og utfører hjelpefunksjonen (linje 23 ~ 26).

Nodirfunksjonen (linjene 39 ~ 42) vil bli utført når vi oppdager at katalogen der søket blir forsøkt ikke eksisterer.

Funksjonalitet

Med dette har vi allerede definert alle nødvendige funksjoner for å utføre programmet vårt, som faktisk starter på linje 44, og sjekke om den første av parameterne som skriptet mottar er "-h", hvis det er sant, utfør hjelpefunksjonen og utganger som indikerer normal avslutning.

Hvis MØNSTER (første parameter som beskrevet i linje 15) er "-a", vises forfatteren etter samme mekanisme som forklart i forrige avsnitt for alternativet "-h".

På spill 56 er det kontrollert at vi ikke har mottatt mindre enn to parametereI dette tilfellet utføres noparams-funksjonen, så i if-linjen 60 finner vi ut hvis katalogen vi ønsker å søke på eksisterer, hvis den eksisterer, vises en tom linje, finn kommando med adressen til katalogen som vi ønsker å utføre søket etterfulgt av mønsteret (begynnelsen på navnet på filen vi leter etter) en ny tom linje og bruke gå ut av $? vi overlater produksjonen av skriptet vårt til resultatet produsert av find. I tilfelle tilstanden til katalog eksistens er falsk (linje 67) ringer vi til nodir-funksjonen og vi går ut og indikerer en unormal avslutning.

Utførelse og testing

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

En følgende artikler om Bash vi vil se mekanismene for bruke parametere i funksjonerVi vil også se hvordan artikulere returdata av dem.

Jeg håper og håper at dette innlegget har vært nyttig for deg.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

      josea sa

    Hei,
    veldig interessant og veldig tydelig.
    Bare et notat; en $ mangler på linje 68 foran variabelen EXIT_BAD.
    Jeg vil fortsette å lære sikkert med artiklene dine.