Bashi funktsioonide kasutamine selle Unixi kestapõhise ja POSIX-iga ühilduva arvutikeele abil. Keelena koosneb selle funktsioon Linuxi käskude tõlgendamisest, mis võimaldab meil automatiseerida oma korduvaid protsesse ja luua käske ka operatsioonisüsteemi käskudest. Selles artiklis vaatame üle kuidas kasutada funktsioone bashis. Soovitan lugeda artiklit kuidas looge oma skriptid bashi abil.
Meie pakutud skriptis kasutame faili otsimiseks bashi keelt, teades selle nime. Selleks kasutame leidke käsk vaid eelnevalt skriptis määratletud funktsioonide abil. Peate arvestama Bashi eripära või piirangutega, mida pole kõigis keeltes: funktsiooni kutsumiseks tuleb see määratleda varem.
Määrake rollid
Funktsioonide määratlemiseks on kaks võimalust: funktsioonideklaratsiooniga või ilma:
function nombre_funcion () { # codigo }
või see teine, mida ma kasutan, nagu näete hiljem.
nombre_funcion () { # codigo }
Ka Bash pakub ka meetodit parameetrite edastamiseks ja tulemuste tagastamiseks. mida näeme järgmistes artiklites.
#!/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
Skripti analüüs
Mõisted
Bashile igal edukalt lõpule viidaval protsessil peab olema signaaliks kood "0". Ridadel 12 ja 13 määratletakse käsitletavad veakoodid EXIT_OK edu saavutamiseks y EXIT_BAD nurjumisel väljumiseks.
Ridadel 15 ja 16 määratakse PATTERN ja DIRECTORY muutujate jaoks esimene ($ 1) ja teine ($ 2) parameeter, mis kuvatakse käsureal pärast skripti nime, nagu näeme hiljem selle täitmisel.
Aastal 18. rida loome oma esimese funktsiooni. Funktsioon nimega "autor" kuvab stsenaariumi autorlus kui seda nimetame argumendiga "-a", nagu on näha if-ridadel 50 ~ 54. Argument "ja" alates 23. reast võimaldab kuvada «järgmise rea» järjestuse kodeerides «\ n».
Kõne noparamidele (read 28 ~ 37) vastutab sündmuste haldamise eest, mis peavad toimuma, kui skript kutsutakse ilma parameetriteta. Uute rea koodide vahele õigesti suletuna kuvatakse teade, mis näitab, et skript tuleb käivitada kahe parameetriga, seejärel kuvatakse suvand (rida 31) lugenud Juhuks, kui soovite näidata abi, palutakse teil vajutada "S" või "s". Reas 32 ütleme sõna otseses mõttes: "kui vastus (see tuleb meile muutujas $ VASTUS) sisaldab suvalisi tähti, mis tähistavad suurtähte või väiketähti ”, seejärel näitab (rida 33) tühja rida (rida 34) ja täidab abifunktsiooni (read 23–26).
Funktsioon nodir (read 39 ~ 42) käivitatakse, kui tuvastame, et kataloogi, kus otsitakse, pole olemas.
funktsionaalsus
Sellega meil juba on määratlesid kõik vajalikud funktsioonid käivitada meie programm, mis tegelikult algab real 44, kontrollides, kas skripti saanud parameetritest esimene on "-h", kui see on tõsi, käivitage abifunktsioon ja väljumist, mis näitab normaalset lõpetamist.
Kui PATTERN (esimene parameeter, mida on kirjeldatud real 15) on "-a", kuvatakse autor järgides sama mehhanismi, mida on eelmises lõigus selgitatud valiku "-h" kohta.
Liinil 56 kontrollitakse, et me pole saanud alla kahe parameetriSellisel juhul käivitatakse funktsioon noparams, seejärel saame 60. rea if-st teada kui kataloog, milles soovime otsingu teha, on olemas, kui see on olemas, kuvatakse tühi rida leidke käsk kataloogi aadressiga, kus soovime otsingu teha, millele järgneb muster (otsitava faili nime algus) uus tühi rida ja väljuda $? usaldame oma skripti väljundi leidu tulemusele. Juhul kui kataloogi olemasolu on vale (rida 67) kutsume funktsiooni nodir ja väljume ebanormaalsest lõpetamisest.
Täitmine ja testimine
$ encontrar $ encontrar -a $ encontrar -h $ encontrar index aljflaskjf #directorio no existe $ encontrar index public_html $
En järgmised artiklid Bashi kohta näeme mehhanisme kasutage funktsioonides parameetreidNäeme ka, kuidas tagastamise andmete artikuleerimine samast.
Loodan ja loodan, et see postitus on teile kasulik olnud.
Kommentaar, jätke oma
Tere,
väga huvitav ja väga selge.
Lihtsalt märkus; muutuja EXIT_BAD ees oleval real 68 puudub a $.
Jätkan teie artiklitega kindlalt õppimist.