Kaip naudoti „Bash“ funkcijas naudojant šią „Unix“ apvalkalu pagrįstą ir POSIX suderinamą kompiuterio kalbą. Kaip kalbą, jos funkciją sudaro „Linux“ komandų aiškinimas, leidžiantis automatizuoti pasikartojančius procesus ir taip pat kurti komandas iš operacinės sistemos komandų. Šiame straipsnyje mes apžvelgsime kaip naudoti funkcijas bash. Aš rekomenduoju perskaityti straipsnį kaip susikurkite savo scenarijus naudodami „bash“.
Siūlomame scenarijuje failo paieškai naudojame Bash kalbą, žinodami jo pavadinimą. Tam mes naudosime rasti komandą bet anksčiau minėtame scenarijuje apibrėžtų funkcijų pagalba. Turite atsižvelgti į „Bash“ ypatumą ar apribojimą, kuris nėra visose kalbose: norint iškviesti funkciją, ji turi būti apibrėžta anksčiau.
Apibrėžkite funkcijas
Yra du būdai apibrėžti funkcijas: su funkcijų deklaracija arba be jos:
function nombre_funcion () { # codigo }
arba šis kitas, kurį naudoju, kaip pamatysite vėliau.
nombre_funcion () { # codigo }
Taip pat Bashas taip pat pateikia parametrų perdavimo ir rezultatų grąžinimo metodą. kurį pamatysime būsimuose straipsniuose.
#!/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
Scenarijaus analizė
Apibrėžimai
Dėl bash Kiekvienas sėkmingai užbaigtas procesas turi būti kodas „0“ kaip signalas. 12 ir 13 eilutėse nurodomi tvarkomi klaidų kodai EXIT_OK už sėkmę y EXIT_BAD, jei norite išeiti nesėkmės atveju.
15 ir 16 eilutėse PATTERN ir DIRECTORY kintamiesiems priskiriami pirmieji ($ 1) ir antrieji ($ 2) parametrai, kurie atsiranda komandinėje eilutėje po scenarijaus pavadinimo, kaip pamatysime vėliau, kai jį vykdysime.
Į 18 eilutė mes sukuriame savo pirmąją funkciją. Funkcija, vadinama «autoriumi», rodo scenarijaus autorystė kai jį vadiname argumentu „-a“, kaip matote if ~ 50 ~ 54 eilutėse. Argumentas „ir“ iš 23 eilutės leidžia parodyti «kitos eilutės» seką užkoduojant «\ n».
Skambinimas į „noparams“ (28–37 eilutės) yra atsakingas už įvykių, kurie turi įvykti iškvietus scenarijų be jokių parametrų, valdymą. Parodome tinkamai uždarytą tarp naujų eilučių kodų pranešimą, nurodantį, kad scenarijus turi būti vykdomas dviem parametrais, tada parodyta parinktis (31 eilutė) skaityti Jei norite parodyti pagalbą, raginama paspausti „S“ arba „s“. 32 eilutėje mes pažodžiui sakome: „jei atsakymas (kuris gaunamas kintamajame $ ATSAKYTI) yra bet kuris simbolis, kurį sudaro didžiosios arba mažosios raidės “, tada (33 eilutė) rodo tuščią eilutę (34 eilutė) ir vykdo pagalbos funkciją (23–26 eilutės).
„Nodir“ funkcija (39–42 eilutės) bus vykdoma, kai nustatysime, kad katalogo, kuriame bandoma ieškoti, nėra.
Funkcionalumas
Tai mes jau turime apibrėžė visas būtinas funkcijas vykdyti mūsų programą, kuri iš tikrųjų prasideda 44 eilutėje, patikrindama, ar pirmasis parametras, kurį gauna scenarijus, yra „-h“, jei tai tiesa, vykdykite pagalbos funkciją ir išėjimai rodo įprastą nutraukimą.
Jei PATTERN (pirmasis parametras, aprašytas 15 eilutėje) yra „-a“, autorius rodomas pagal tą patį mechanizmą, kuris paaiškintas ankstesnėje pastraipoje „-h“ parinkčiai.
Ant linijos 56 kontroliuojama, kad negavome mažiau nei dviejų parametrųŠiuo atveju vykdoma „noparams“ funkcija, tada sužinosime „if“ 60 eilutėje jei yra katalogas, kuriame norime atlikti paiešką, jei jis egzistuoja, rodoma tuščia eilutė rasti komandą nurodant katalogo, kuriame norime atlikti paiešką, adresą, po kurio rašoma (ieškomo failo pavadinimo pradžia) nauja tuščia eilutė ir naudojant išeiti iš $? mes patikime savo scenarijaus išvestį rezultatui, kurį sukuria „find“. Jei būklė katalogo egzistavimas yra klaidingas (67 eilutė) iškviečiame nodir funkciją ir išeiname nurodydami nenormalų nutraukimą.
Vykdymas ir testavimas
$ encontrar $ encontrar -a $ encontrar -h $ encontrar index aljflaskjf #directorio no existe $ encontrar index public_html $
En sekantys straipsniai apie Bashą pamatysime mechanizmus naudoti parametrus funkcijoseTaip pat pamatysime, kaip suformuluoti grąžinimo duomenis iš to paties.
Tikiuosi ir tikiuosi, kad šis įrašas jums buvo naudingas.
Sveiki,
labai įdomu ir labai aišku.
Tiesiog pastaba; $ 68 trūksta XNUMX eilutėje prieš kintamąjį EXIT_BAD.
Toliau tikrai mokysiuosi su jūsų straipsniais.