Programmering i bash - del 3

till säkra vår begrepp Vi lär oss 2 mycket användbara verktyg för programmering som fungerar perfekt i Bash. Lär dig att skapa funciones och definiera rörledningar kan verka komplicerat först, men sedan kommer vi att se det enorma utilidad att de ger oss.

Rör

Specifikt och utan att gå runt för mycket är en pipeline en metod som gör det möjligt att styra utdata från en process som inmatning av en annan, vilket möjliggör en rad fördelar, såsom att minska kodrader, undvika lagringsvariabler för resultat och förbättra manuskriptets effektivitet.

Ett rör känns allmänt igen med symbolen | som gör det möjligt att sammanfoga uttryck; Även om det används som standard finns det andra sätt att skapa rör.

Exempel: skriv ut senaste kärnmeddelanden

#dmesg låter dig se senaste kärnmeddelanden och laddade drivrutiner # under systemstart; svansen skriver ut de sista delarna av en fil eller #command

dmesg | svans

Även om de kan vara komplicerade så mycket som vi vill, tillåter den grundläggande strukturen i en rörledning att resultatet av ett kommando kan användas som ingång till nästa, vilket kan ge inmatning för ett nytt kommando om vi fortsätter att lägga till på varandra följande rör.

funciones

Funktioner är en uppsättning påståenden som är grupperade så att de kan köras flera gånger utan att behöva skriva om dem. Det motsvarar att vi tänker att när vi lär oss att laga en typ av mat skriver vi dess recept på ett ark, och varje gång vi vill laga den maten konsulterar vi receptet istället för att skriva om ett nytt ark med samma recept.

Det kanske viktigaste med funktioner är möjligheten att skicka parametrar, data som de kommer att använda för att bearbeta dem och generera en utdata. Dess struktur är som följer:

funktionsfunktionsnamn {

processer

}

Exempel: funktion som visar tjänsterna som fungerar på TCP-protokollet. Vi kan också se hur man applicerar fler rör.

# Vi definierar ett funktionsnamn, det kan vara det vi gillar.

funktion services_tcp {

#cat sammanfogar och visar innehållet i mappen / etc / services, som är # som innehåller alla tjänster med tillhörande portar.

# den första grep tar listan och tar bort kommentarer, med –v inverterar vi resultatet

# den andra grep visar bara de som är relaterade till tcp

katt / etc / tjänster | grep –v "^ #" | grep tcp

}

När vi behöver utföra den här funktionen måste vi bara kalla den med sitt namn:

tcp_services

I det här fallet fungerar det utan parametrar; Om den har dem måste vi lägga till dem så att funktionen fungerar ordentligt, annars fungerar inte funktionen korrekt. Med hjälp av retur kan en funktion returnera ett värde som ett resultat av processen.

Exempel: funktion med ingångsparametrar som beräknar summan av två nummer.

#! / Bin / bash
funktionssumma ()
{
# med låt oss utföra operationen inuti offerten
låt "resultat = $ 1 + $ 2"

#return gör det möjligt att returnera heltalsvärdet. När avkastningen har genomförts kommer värdet att sättas in i variabeln $?
returnera $ resultat;
}
 
#Summefunktionen anropas och vi skickar två ingångsparametrar.

lägg till 2 3

#prints värdet på $? med eko som utvärderar variabelns faktiska värde i offert
echo -e "Resultat = $?";

<< Gå till föregående del

Tack Juan Carlos Ortiz!


7 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Nill pekare sade

    Jag är inte säker, men returuttalandet för funktionerna tjänar bara till att returnera ett heltal mellan 0 och 255, som felkoderna "exit", vanligtvis 0 om allt är bra och ett annat nummer för de andra fallen. Även om det i exemplet fungerar så tycker jag att det inte är bra att returnera resultatet med retur.
    Där bort säger jag ett nonsens va! öga! ha!

  2.   johnk sade

    Sanningen lämnade mig tvivel. I vilket fall som helst, för att undvika problem med funktionerna kan vi ersätta returen med eko om funktionen försöker returnera eller skriva ut ett värde eller en sträng.

  3.   Abel S. Mount Big sade

    Det är sant, för att lösa detta kan du använda kommandot bc, i sumfunktionen kan du använda: resultat = `echo $ 1 + $ 2 | bc -ql '

  4.   Luis Miguel sade

    bra,

    Jag skulle vilja veta var jag kan spara bash-filerna för att köra hela systemet och det är inte bin-katalogen, men kan vara hem för säkerhetskopiering.

    Tack och hälsningar.

  5.   Joaquin sade

    Tack så mycket, jag börjar med manusen, och sanningen är att detta är väldigt användbart, du är väldigt snäll att dela med dig av dina kunskaper!
    hälsningar

    1.    låt oss använda Linux sade

      Tack! Kram!
      Paul

  6.   CRISTHIAN sade

    Syntaxfel: "(" oväntat
    Jag får ett fel när jag försöker köra exemplet, jag kopierade det exakt samma

    Vad kan vara? Jag är på Ubuntu 14.10