Programiranje u bashu - 3. dio

u siguran naše pojmovi Naučit ćemo 2 vrlo korisna alata za programiranje koji savršeno rade u Bashu. Naučite stvarati funkcije i definirati cjevovodi u početku može izgledati složeno, ali tada ćemo vidjeti neizmjerno korisnost koje nam pružaju.

Cijevi

Konkretno, bez pretjeranog okretanja, cjevovod je metoda koja omogućuje usmjeravanje rezultata jednog procesa kao ulaza drugog, što omogućuje niz prednosti, poput smanjenja reda koda, ispuštanja varijabli za pohranu rezultata i poboljšanja učinkovitost skripte.

Cijev se općenito prepoznaje po simbolu | koji vam omogućuje spajanje izraza; Iako se koristi prema zadanim postavkama, postoje i drugi načini za stvaranje cijevi.

Primjer: ispis nedavnih poruka jezgre

#dmesg omogućuje vam pregled nedavnih poruka jezgre i učitanih upravljačkih programa # tijekom pokretanja sustava; tail ispisuje posljednje dijelove datoteke ili # naredbe

dmesg | rep

Iako se mogu komplicirati koliko god želimo, osnovna struktura cjevovoda omogućuje da se rezultat jedne naredbe koristi kao ulaz u sljedeću, što može pružiti unos nove naredbe ako nastavimo dodavati uzastopne cijevi.

Funkcije

Funkcije su skup izjava koje su grupirane zajedno tako da se mogu izvršiti nekoliko puta bez potrebe za njihovim ponovnim pisanjem. Ekvivalentno je razmišljanju da kada naučimo kuhati neku vrstu hrane, zapisat ćemo njezin recept na list i svaki put kad želimo kuhati tu hranu konzultiramo recept, umjesto da novi list prepišemo s istim receptom.

Možda najvažnija stvar kod funkcija je mogućnost prosljeđivanja parametara, podataka koje će koristiti za njihovu obradu i generiranje rezultata. Njegova je struktura sljedeća:

funkcija ime-funkcije {

procesi

}

Primjer: funkcija koja prikazuje usluge koje rade na tcp protokolu. Također možemo vidjeti kako primijeniti više cijevi.

# Definiramo naziv funkcije, može biti onaj koji nam se sviđa.

funkcija services_tcp {

#cat spaja i prikazuje sadržaj mape / etc / services, a to je # koja sadrži sve usluge s pripadajućim priključcima.

#prvi grep uzima popis i uklanja komentare, s –v invertiramo rezultat

# drugi grep prikazuje samo one povezane s tcp-om

mačka / itd. / usluge | grep –v "^ #" | grep tcp

}

Kad trebamo izvršiti ovu funkciju, moramo je nazvati imenom:

tcp_services

U ovom slučaju radi bez parametara; U slučaju da ih ima, moramo ih dodati kako bi funkcija ispravno radila, inače funkcija neće raditi ispravno. Korištenje return omogućuje funkciji da vrati vrijednost kao rezultat procesa.

Primjer: funkcija s ulaznim parametrima koja izračunava zbroj 2 broja.

#! / bin / bash
zbroj funkcija ()
{
# with neka možemo izvršiti operaciju unutar navodnika
neka "rezultat = $ 1 + $ 2"

#return omogućuje vraćanje cijele vrijednosti. Nakon izvršavanja povrata, vrijednost će se pohraniti unutar varijable $?
vrati $ rezultat;
}
 
# Pozva se funkcija zbroja i prolazimo 2 ulazna parametra.

dodaj 2 3

#prints vrijednost $? s odjekom koji procjenjuje stvarnu vrijednost varijable u navodnicima
echo -e "Rezultat = $?";

<< Idite na prethodni dio

Hvala Juan Carlos Ortiz!


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Nill pokazivač dijo

    Nisam siguran, ali naredba return funkcija služi samo za vraćanje cijelog broja između 0 i 255, poput kodova pogrešaka "exit", obično 0 ako je sve u redu i drugi broj za ostale slučajeve. Iako ovo djeluje u primjeru, mislim da nije dobra praksa vraćati rezultat povratkom.
    Tamo kažem glupost, a! oko! Ha!

  2.   johnk dijo

    Istina me ostavila u sumnji. U svakom slučaju, da bismo izbjegli probleme s funkcijama, povrat možemo zamijeniti odjekom u slučaju da funkcija želi vratiti ili ispisati vrijednost ili niz.

  3.   Abel S. Mount Big dijo

    Istina je, da biste to riješili možete koristiti naredbu bc, u funkciji zbroja možete koristiti: result = `echo $ 1 + $ 2 | bc -ql`

  4.   Luis Miguel dijo

    dobar,

    Želio bih znati gdje mogu spremiti bash datoteke za pokretanje cijelog sustava, a to nije bin direktorij, ali može biti dom za sigurnosnu kopiju.

    Hvala i pozdrav.

  5.   Joaquin dijo

    Puno vam hvala, počinjem sa skriptama, a istina je da je ovo vrlo korisno, vrlo ste ljubazni i dijelite svoje znanje!
    pozdravi

    1.    poslužimo se linuxom dijo

      Hvala vam! Zagrliti!
      Pavle

  6.   CRISTHIAN dijo

    Sintaksna pogreška: "(" neočekivano
    Dobivam pogrešku prilikom pokušaja pokretanja primjera, kopirao sam ga potpuno isto

    Što može biti? ja sam na ubuntuu 14.10