Sådan bruges funktioner i Bash ved hjælp af dette Unix-shell-baserede, POSIX-kompatible computersprog. Som sprog består dets funktion af fortolkningen af Linux-kommandoer, der giver os mulighed for at automatisere vores gentagne processer og også oprette kommandoer fra operativsystemets kommandoer. I denne artikel vil vi gennemgå hvordan man bruger funktioner i bash. Jeg anbefaler at læse artiklen hvordan Opret dine egne scripts ved hjælp af bash.
I det script, vi foreslår, bruger vi Bash-sproget til at søge efter en fil, idet vi kender dens navn. Til dette vil vi bruge find kommando men ved hjælp af de funktioner, der tidligere er defineret i det nævnte script. Du skal tage højde for en ejendommelighed eller begrænsning af Bash, der ikke findes på alle sprog: For at kalde en funktion skal den defineres tidligere.
Definer funktioner
Der er to måder at definere funktioner på: med eller uden funktionserklæringen:
function nombre_funcion () { # codigo }
eller denne anden, som jeg bruger som du vil se senere.
nombre_funcion () { # codigo }
også Bash giver også en metode til at overføre parametre og returnere resultater. som vi vil se i fremtidige artikler.
#!/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
Script analyse
definitioner
For bash hver proces, der gennemføres med succes, skal have koden "0" som et signal. Linie 12 og 13 definerer de håndterede fejlkoder EXIT_OK for succes y EXIT_BAD til afslutning ved fejl.
I linje 15 og 16 tildeles variablerne MØNSTER og DIRECTORY de første ($ 1) og anden ($ 2) parametre, der vises på kommandolinjen efter navnet på scriptet, som vi vil se senere, når vi udfører det.
I linje 18 vi opretter vores første funktion. Funktionen kaldet «forfatter» viser manuskriptforfatterskab når vi kalder det med "-a" -argumentet, som det kan ses i if på linjerne 50 ~ 54. Argumentet "-og" fra linje 23 gør det muligt at vise sekvensen af «næste linje» ved at kode «\ n».
Opkaldet til noparams (linje 28 ~ 37) har ansvaret for at styre de begivenheder, der skal forekomme, når scriptet kaldes op uden parametre. Vi viser, korrekt lukket mellem nye linjekoder, en besked, der angiver, at scriptet skal udføres med to parametre, så vises en mulighed (linje 31) til brug læse Det beder dig om at trykke på "S" eller "s", hvis du vil vise hjælp. I linje 32 siger vi bogstaveligt: 'hvis svaret (der kommer til os i variablen $ SVAR) indeholder et hvilket som helst af de tegn, der er store eller små bogstaver ', viser derefter (linje 33) en tom linje (linje 34) og udfører hjælpefunktionen (linje 23 ~ 26).
Funktionen nodir (linie 39 ~ 42) udføres, når vi registrerer, at den mappe, hvor søgningen forsøges, ikke findes.
funktionalitet
Med dette har vi allerede definerede alle nødvendige funktioner for at udføre vores program, som faktisk starter på linje 44, kontrollere om den første af parametrene som scriptet modtager er "-h", hvis det er sandt, udfør hjælpefunktionen og udgange, der angiver normal afslutning.
Hvis MØNSTER (første parameter som beskrevet i linje 15) er "-a", vises forfatteren ved at følge den samme mekanisme, der er forklaret i det foregående afsnit for "-h" -indstillingen.
På linjen 56 kontrolleres det, at vi ikke har modtaget mindre end to parametreI dette tilfælde udføres noparams-funktionen, så i if-linjen 60 finder vi det ud hvis den mappe, som vi vil søge på, findes, hvis den findes, vises en tom linje, find kommando med adressen på det bibliotek, som vi ønsker at udføre søgningen efterfulgt af mønsteret (begyndelsen på navnet på den fil, vi leder efter) en ny tom linje og ved hjælp af afslutte $? vi overlader produktionen af vores script til resultatet produceret af find. I tilfælde af tilstanden af katalog eksistens er falsk (linje 67) ringer vi til nodir-funktionen og vi går ud, hvilket indikerer en unormal ophør.
Udførelse og test
$ encontrar $ encontrar -a $ encontrar -h $ encontrar index aljflaskjf #directorio no existe $ encontrar index public_html $
En følgende artikler om Bash vi vil se mekanismerne for bruge parametre i funktionerVi vil også se, hvordan vi gør det artikulere returdata af dem.
Jeg håber og håber, at dette indlæg har været nyttigt for dig.
Hej,
meget interessant og meget tydelig.
Bare en note; en $ mangler på linje 68 foran variablen EXIT_BAD.
Jeg vil fortsætte med at lære sikkert med dine artikler.