Programmering i bash - del 3

til sikker vores begreber Vi lærer 2 meget nyttige værktøjer til programmering, der fungerer perfekt i Bash. Lær at skabe funciones og definere rørledninger kan synes komplekse i starten, men så vil vi se det enorme utilidad at de giver os.

Rør

Specifikt og uden at tage for mange drejninger, er et rør en metode, der tillader at dirigere output fra en proces som input af en anden, hvilket giver mulighed for en række fordele, såsom at reducere kodelinjer, dispensere med lagringsvariabler for resultater og forbedre effektiviteten af ​​scriptet.

Et rør genkendes generelt ved at have symbolet | der gør det muligt at sammenkæde udtryk; Selvom det bruges som standard, er der andre måder at oprette rør på.

Eksempel: udskriv nylige kernelmeddelelser

#dmesg giver dig mulighed for at se nylige kernemeddelelser og indlæste drivere # under systemstart; hale udskriver de sidste dele af en fil eller #command

dmesg | hale

Selvom de kan være komplicerede så meget, som vi vil, tillader den grundlæggende struktur i en rørledning, at resultatet af en kommando kan bruges som input til den næste, som kan give input til en ny kommando, hvis vi fortsætter med at tilføje på hinanden følgende rør.

funktioner

Funktioner er et sæt udsagn, der er grupperet sammen, så de kan udføres flere gange uden at skulle omskrive dem. Det svarer til at tænke, at når vi lærer at tilberede en type mad, vil vi skrive opskriften på et ark, og hver gang vi vil tilberede den mad, konsulterer vi opskriften i stedet for at omskrive et nyt ark med den samme opskrift.

Måske er det vigtigste ved funktioner muligheden for at videregive parametre, data, som de vil bruge til at behandle dem og generere et output. Dens struktur er som følger:

funktion funktionsnavn {

processer

}

Eksempel: funktion, der viser de tjenester, der fungerer på TCP-protokollen. Vi kan også se, hvordan man anvender flere rør.

# Vi definerer et funktionsnavn, det kan være det, vi kan lide.

funktion services_tcp {

#cat sammenkæder og viser indholdet af mappen / etc / services, som er #, der indeholder alle tjenesterne med deres tilknyttede porte.

# den første grep tager listen og fjerner kommentarerne, med –v vi inverterer resultatet

# den anden grep viser kun dem, der er relateret til tcp

kat / etc / tjenester | grep –v "^ #" | grep tcp

}

Når vi har brug for at udføre denne funktion, skal vi bare kalde den ved dens navn:

tcp_services

I dette tilfælde fungerer det uden parametre; I tilfælde af at den har dem, skal vi tilføje dem, så funktionen fungerer korrekt, ellers fungerer funktionen ikke korrekt. Brug af retur giver en funktion mulighed for at returnere en værdi som et resultat af processen.

Eksempel: funktion med inputparametre, der beregner summen af ​​2 tal.

#! / Bin / bash
funktionssum ()
{
# med lad kan vi udføre operationen inde i tilbudene
lad "resultat = $ 1 + $ 2"

#return giver mulighed for at returnere heltalets værdi. Når afkastet er udført, vil værdien blive deponeret inde i variablen $?
returnere $ resultat;
}
 
#Funktionen sum kaldes, og vi videregiver 2 inputparametre.

tilføj 2 3

#prints værdien af ​​$? med ekko, der vurderer den aktuelle værdi af variablen i anførselstegn
ekko -e "Resultat = $?";

<< Gå til forrige del

Tak Juan Carlos Ortiz!


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Nillemarkør sagde han

    Jeg er ikke sikker, men returneringserklæringen for funktionerne bruges kun til at returnere et heltal mellem 0 og 255, ligesom fejlkoderne "exit", generelt 0, hvis alt er i orden og et andet nummer for de andre tilfælde. Selvom dette i eksemplet fungerer, synes jeg ikke det er en god praksis at returnere resultatet med retur.
    Derovre siger jeg en vrøvl hej! øje! ha!

  2.   johnk sagde han

    Sandheden efterlod mig tvivlen. For at undgå problemer med funktionerne kan vi under alle omstændigheder erstatte returneringen med ekko i tilfælde af, at funktionen søger at returnere eller udskrive en værdi eller streng.

  3.   Abel S. Mount Big sagde han

    Det er sandt, for at løse dette kan du bruge kommandoen bc, i sumfunktionen kan du bruge: resultat = `echo $ 1 + $ 2 | bc -ql`

  4.   Luis Miguel sagde han

    god,

    Jeg vil gerne vide, hvor jeg kan gemme bash-filerne til at køre hele systemet, og det er ikke bin-biblioteket, men kan være hjemsted for sikkerhedskopiering.

    Tak og hilsen.

  5.   Joaquin sagde han

    Mange tak, jeg begynder med manuskripterne, og sandheden er, at dette er meget nyttigt, du er meget venlig og deler din viden!
    hilsen

    1.    lad os bruge linux sagde han

      Tak skal du have! Kram!
      Paul

  6.   CRISTHIAN sagde han

    Syntaksfejl: "(" uventet
    Jeg får en fejl, når jeg prøver at køre eksemplet, jeg kopierede det nøjagtigt det samme

    Hvad kan der være? Jeg er på Ubuntu 14.10