Programiranje v bash - 3. del

za varno naš pojmi Naučili se bomo 2 zelo uporabnih orodij za programiranje, ki odlično delujejo v Bashu. Naučite se ustvarjati funkcije in definirati cevi se sprva zdi zapleteno, potem pa bomo videli neizmerno pripomoček da nam zagotavljajo.

Cevi

Natančneje in brez zavijanja preveč je cevovod metoda, ki omogoča usmerjanje izhoda enega procesa kot vhoda drugega, kar omogoča vrsto prednosti, kot so zmanjšanje vrstic kode, odpravljanje spremenljivk za shranjevanje za rezultate in izboljšanje učinkovitost scenarija.

Cev se na splošno prepozna s simbolom | ki omogoča združevanje izrazov; Čeprav se uporablja privzeto, obstajajo tudi drugi načini za ustvarjanje cevi.

Primer: natisnite nedavna sporočila jedra

#dmesg omogoča ogled nedavnih sporočil jedra in naloženih gonilnikov # med zagonom sistema; tail natisne zadnje dele datoteke ali #command

dmesg | rep

Čeprav so lahko zapleteni, kolikor želimo, osnovna struktura cevovoda omogoča, da se rezultat enega ukaza uporabi kot vhod v naslednjega, kar lahko zagotovi vhod za nov ukaz, če še naprej dodajamo zaporedne cevi.

Funciones

Funkcije so nabor stavkov, ki so združeni v skupine, tako da jih je mogoče večkrat izvajati, ne da bi jih bilo treba prepisovati. Enakovredno je razmišljanju, da bomo, ko se naučimo kuhati vrsto hrane, zapisovali njen recept na list in vsakič, ko želimo kuhati to hrano, se posvetujemo z receptom, namesto da bi z istim receptom prepisali nov list.

Morda je pri funkcijah najpomembnejša možnost posredovanja parametrov, podatkov, ki jih bodo uporabili za njihovo obdelavo in ustvarjanje rezultata. Njegova struktura je naslednja:

funkcija ime-funkcije {

procesov

}

Primer: funkcija, ki prikazuje storitve, ki delujejo na protokolu tcp. Prav tako lahko vidimo, kako uporabiti več cevi.

# Določimo ime funkcije, lahko je tisto, ki nam je všeč.

funkcija services_tcp {

#cat združuje in prikazuje vsebino mape / etc / services, ki vsebuje # vse storitve s pripadajočimi vrati.

#prvi grep vzame seznam in odstrani komentarje, z –v obrnemo rezultat

# drugi grep prikazuje samo tiste, povezane s tcp

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

}

Ko moramo izvršiti to funkcijo, jo moramo poklicati z imenom:

tcp_services

V tem primeru deluje brez parametrov; V primeru, da jih ima, jih moramo dodati, da funkcija deluje pravilno, sicer funkcija ne bo delovala pravilno. Uporaba return omogoča funkciji, da vrne vrednost kot rezultat procesa.

Primer: funkcija z vhodnimi parametri, ki izračuna vsoto dveh števil.

#! / Bin / bash
vsota funkcije ()
{
# s pustimo, da lahko izvedemo operacijo znotraj narekovajev
naj "rezultat = $ 1 + $ 2"

#return omogoča vrnitev celoštevilčne vrednosti. Ko se vrne, bo vrednost deponirana znotraj spremenljivke $?
vrni $ rezultat;
}
 
# Pokliče se funkcija vsote in prenesemo 2 vhodna parametra.

dodajte 2 3

#prints vrednost $? z odmevom, ki ocenjuje dejansko vrednost spremenljivke v narekovajih
echo -e "Rezultat = $?";

<< Pojdi na prejšnji del

Hvala Juan Carlos Ortiz!


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Nill kazalec je dejal

    Nisem prepričan, vendar se stavek return funkcij uporablja le za vrnitev celotnega števila med 0 in 255, kot so kode napak "izhod", običajno 0, če je vse v redu, in drugo število za ostale primere. Čeprav v primeru to deluje, mislim, da ni dobra praksa vrniti rezultat z vrnitvijo.
    Tamle rečem neumnost, kaj! oko! ha!

  2.   johnk je dejal

    Resnica mi je pustila dvom. V vsakem primeru lahko v izogib težavam s funkcijami vrnemo nadomestilo z odmevom, če želi funkcija vrniti ali natisniti vrednost ali niz.

  3.   Abel S. Gora Big je dejal

    Res je, da lahko to rešite z ukazom bc, v funkciji vsote pa lahko uporabite: result = `echo $ 1 + $ 2 | bc -ql`

  4.   Luis Miguel je dejal

    dobro,

    Želel bi vedeti, kam lahko shranim datoteke bash, tako da se izvajajo v celotnem sistemu in to ni imenik bin, lahko pa je dom za izdelavo varnostnih kopij.

    Hvala in pozdrav.

  5.   Joaquin je dejal

    Najlepša hvala, začenjam s scenariji in resnica je, da je to zelo koristno, zelo prijazno delite svoje znanje!
    pozdrav

    1.    uporabimo linux je dejal

      Hvala vam! Objem!
      Paul

  6.   CRISTIAN je dejal

    Sintaksna napaka: "(" nepričakovano
    Ko poskusim zagnati primer, se prikaže napaka, kopiral sem ga popolnoma enako

    Kaj je lahko? jaz sem na ubuntu 14.10