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ý.
Komentár, nechajte svoj
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.