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ý.