Ako používať funkcie v Bashi

Ako používať funkcie v Bashi pomocou tohto počítačového jazyka založeného na prostredí Unix, kompatibilného s POSIX. Ako jazyk spočíva jeho funkcia v interpretácii príkazov Linuxu, čo nám umožňuje automatizovať naše opakujúce sa procesy a tiež vytvárať príkazy z príkazov operačného systému. V tomto článku to preskúmame ako používať funkcie v bashe. Odporúčam prečítať si článok ako vytvorte si vlastné skripty pomocou bash.

V skripte, ktorý navrhujeme, používame na hľadanie súboru jazyk Bash s vedomím jeho názvu. K tomu použijeme nájsť príkaz ale pomocou funkcií predtým definovaných v uvedenom skripte. Musíte vziať do úvahy zvláštnosť alebo obmedzenie Bash, ktoré nie sú k dispozícii vo všetkých jazykoch: na vyvolanie funkcie musí byť definované skôr.

Definujte funkcie

Existujú dva spôsoby definovania funkcií: s deklaráciou funkcie alebo bez nej:

function nombre_funcion () 
{
    # codigo
}

alebo tento druhý, ktorý používam, ako uvidíte neskôr.

nombre_funcion ()
{
    # codigo
}

tiež Bash tiež poskytuje metódu na odovzdanie parametrov a vrátenie výsledkov. ktoré uvidíme v ďalších článkoch.

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


Analýza skriptov

definícia

Pre bash každý úspešne dokončený proces musí mať ako signál kód „0“. Riadky 12 a 13 definujú spracované chybové kódy EXIT_OK pre úspech y EXIT_BAD pre ukončenie pri zlyhaní.

V riadkoch 15 a 16 sú premenným PATTERN a DIRECTORY priradené prvé ($ 1) a druhé ($ 2) parametre, ktoré sa objavia na príkazovom riadku za názvom skriptu, ako uvidíme neskôr, keď ho vykonáme.

V riadok 18 vytvárame našu prvú funkciu. Funkcia s názvom «autor» zobrazuje autorstvo scenárov keď to nazveme argumentom „-a“, ako vidíte na if na riadkoch 50 ~ 54. Tvrdenie „-a“ z linky 23 umožňuje zobraziť postupnosť «nasledujúceho riadku» kódovaním «\ n».

Volanie noparamov (riadky 28 - 37) má na starosti správu udalostí, ktoré sa musia vyskytnúť, keď sa volá skript bez akýchkoľvek parametrov. Ukazujeme, správne uzavreté medzi novými kódmi riadkov, správu označujúcu, že skript musí byť vykonaný s dvoma parametrami, potom sa zobrazí možnosť (riadok 31) použiť čítať Zobrazí sa výzva na stlačenie klávesu „S“ alebo „s“ pre prípad, že chcete zobraziť pomocníka. V riadku 32 doslova hovoríme: „ak odpoveď (tá k nám prichádza v premennej $ ODPOVEĎ) obsahuje ľubovoľné zo znakov, ktoré obsahujú veľké alebo malé písmená, potom (riadok 33) zobrazí prázdny riadok (riadok 34) a vykoná funkciu pomoci (riadky 23 - 26).

Funkcia nodir (riadky 39 ~ 42) sa vykoná, keď zistíme, že adresár, v ktorom sa pokúša hľadať, neexistuje.

funkčnosť

S týmto už máme definované všetky potrebné funkcie vykonať náš program, ktorý sa skutočne začína na riadku 44, skontrolovať, či je prvý z parametrov, ktoré skript dostane, „-h“, ak je to pravda, vykonať pomocnú funkciu a východy označujúce normálne ukončenie.

Ak je PATTERN (prvý parameter popísaný v riadku 15) hodnota „-a“, autor sa zobrazí podľa rovnakého mechanizmu, aký je vysvetlený v predchádzajúcom odseku pre možnosť „-h“.

Na linke 56 je riadené, že k nám dosiahli menej ako dva parametreV tomto prípade je vykonaná funkcia noparams, potom v prípade, že na riadku 60 zistíme ak adresár, v ktorom chceme vyhľadávať, existuje, ak existuje, zobrazí sa prázdny riadok, nájsť príkaz s adresou adresára, v ktorom chceme vykonať vyhľadávanie, za ktorým nasleduje vzor (začiatok názvu súboru, ktorý hľadáme) nový prázdny riadok a pomocou ukončiť $? výstup nášho skriptu zveríme výsledku, ktorý vyprodukoval find. V prípade, že stav existencia adresára je nepravdivá (riadok 67) zavoláme funkciu nodir a odchádzame a označujeme neobvyklé ukončenie.

Vykonanie a testovanie

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

En nasledujúce články o Bashovi uvidíme mechanizmy pre používať parametre vo funkciáchUvidíme aj ako formulovať návratové údaje z toho istého.

Dúfam a dúfam, že tento príspevok bol pre vás užitočný.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   josea dijo

    Dobrý deň,
    veľmi zaujímavé a veľmi jasné.
    Len poznámka; na riadku 68 pred premennou EXIT_BAD chýba $.
    S vašimi článkami sa budem ďalej učiť naisto.