Programiranje u bash - 3. dio

para siguran naš koncepti 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 onda ćemo vidjeti neizmjerno korisnost koje nam pružaju.

Cijevi

Konkretno, bez pretjeranog okretanja, cjevovod je metoda koja omogućuje usmjeravanje izlaza jednog procesa kao ulaza drugog, što omogućava niz prednosti, kao što su smanjenje linija koda, ispuštanje varijabli pohrane za rezultate i poboljšanje efikasnost scenarija.

Cijev se općenito prepoznaje po simbolu | koji omogućava spajanje izraza; Iako se koristi po defaultu, postoje i drugi načini za stvaranje cijevi.

Primjer: ispis nedavnih poruka jezgra

#dmesg vam omogućava da vidite nedavne poruke jezgra i učitane upravljačke programe # tokom pokretanja sistema; 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 da ih prepisujete. Ekvivalentno je razmišljanju da kada naučimo kuhati neku vrstu hrane, zapisat ćemo njen recept na list, a svaki put kada želimo kuhati tu hranu konsultujemo recept, umjesto da prepisujemo novi list 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 struktura je sljedeća:

funkcija ime-funkcije {

procesa

}

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

# Definiramo ime funkcije, može biti ono koje nam se sviđa.

funkcija services_tcp {

#cat spaja i prikazuje sadržaj mape / etc / services, koja # sadrži sve usluge sa pripadajućim portovima.

#prvi grep uzima listu i uklanja komentare, sa –v invertiramo rezultat

# drugi grep prikazuje samo one koji se odnose na tcp

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

}

Kada moramo 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 tako da funkcija radi ispravno, inače funkcija neće raditi ispravno. Korištenje return omogućava funkciji da vrati vrijednost kao rezultat procesa.

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

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

#return omogućava vraćanje cijele vrijednosti. Jednom kada se povrat izvrši, vrijednost će se pohraniti unutar varijable $?
vrati $ rezultat;
}
 
# Pozva se funkcija zbroja i prosljeđujemo 2 ulazna parametra.

dodaj 2 3

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

<< Idite na prethodni dio

Hvala Juan Carlos Ortiz!


7 komentara, ostavi svoj

Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Nill pokazivač rekao je

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

  2.   johnk rekao je

    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 rekao je

    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 rekao je

    Dobro,

    Želio bih znati gdje mogu spremiti bash datoteke tako da se pokreću širom sistema, a to nije bin direktorij, ali može biti dom za sigurnosnu kopiju.

    Hvala i pozdrav.

  5.   Joaquin rekao je

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

    1.    iskoristimo linux rekao je

      Hvala ti! Zagrljaj!
      Pablo

  6.   CRISTIAN rekao je

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

    Šta može biti? ja sam na ubuntu 14.10