Ohjelmointi bashissa - osa 3

että turvallinen meidän käsitteet Opimme 2 erittäin hyödyllistä ohjelmointityökalua, jotka toimivat täydellisesti Bashissa. Opi luomaan tehtävät ja määritellä putkistojen voi tuntua aluksi monimutkaiselta, mutta sitten näemme valtavan utilidad että he tarjoavat meille.

Putket

Erityisesti ja ottamatta liikaa käännöksiä putkilinja on menetelmä, joka sallii yhden prosessin ulostulon ohjaamisen toisen syötteenä, mikä antaa joukon etuja, kuten koodirivien pienentäminen, varastointi muuttujien jättäminen tulosten saavuttamiseksi ja parantaminen skriptin tehokkuus.

Putki tunnistetaan yleensä symbolilla | joka antaa mahdollisuuden liittää lausekkeita; Vaikka sitä käytetään oletusarvoisesti, on olemassa muita tapoja luoda putkia.

Esimerkki: tulosta viimeisimmät ytimen viestit

#dmesg antaa sinun nähdä viimeisimmät ytimen viestit ja ladatut ohjaimet # järjestelmän käynnistyksen aikana; tail tulostaa tiedoston tai #komennon viimeiset osat

dmesg | häntä

Vaikka ne voivat olla monimutkaisia ​​niin paljon kuin haluamme, putkilinjan perusrakenne sallii yhden komennon tuloksen käyttämisen syötteenä seuraavaan, mikä voi antaa uuden komennon syötteen, jos jatkamme peräkkäisten putkien lisäämistä.

Funciones

Funktiot ovat joukko lauseita, jotka on ryhmitelty siten, että ne voidaan suorittaa useita kertoja tarvitsematta kirjoittaa niitä uudelleen. Se vastaa ajattelua, että kun opimme valmistamaan tietyntyyppistä ruokaa, kirjoitamme sen reseptin arkille, ja joka kerta kun haluamme valmistaa tuon ruoan, neuvomme reseptin sen sijaan, että kirjoittaisimme uuden arkin samalla reseptillä.

Ehkä tärkein asia funktioissa on mahdollisuus välittää parametreja, tietoja, joita ne käyttävät niiden käsittelyyn ja tuotoksen tuottamiseen. Sen rakenne on seuraava:

funktio funktionimi {

prosessit

}

Esimerkki: toiminto, joka näyttää TCP-protokollalla toimivat palvelut. Voimme myös nähdä, kuinka lisää putkia.

# Määritämme funktion nimen, se voi olla haluamasi nimi.

function services_tcp {

#cat yhdistää ja näyttää / etc / services -kansion sisällön, joka on #, joka sisältää kaikki palvelut niihin liittyvillä porteilla.

# ensimmäinen grep vie luettelon ja poistaa kommentit, kääntämällä tuloksen kääntämällä –v

# toinen grep näyttää vain ne, jotka liittyvät TCP: hen

kissa / jne. / palvelut grep –v "^ #" | grep tcp

}

Kun meidän on suoritettava tämä toiminto, meidän on vain kutsuttava sitä nimellä:

tcp_services

Tässä tapauksessa se toimii ilman parametreja; Jos sillä on niitä, meidän on lisättävä ne, jotta toiminto toimii oikein, muuten toiminto ei toimi kunnolla. Palautuksen avulla funktio palauttaa arvon prosessin seurauksena.

Esimerkki: toiminto syöttöparametreilla, joka laskee 2 luvun summan.

#! / Bin / bash
funktion summa ()
{
# avulla voimme suorittaa operaation lainausmerkkien sisällä
anna "tulos = $ 1 + $ 2"

#return antaa arvon palauttaa kokonaisluku. Kun palautus on suoritettu, arvo talletetaan muuttujan $? Sisään.
return $ -tulos;
}
 
# Summa-funktio kutsutaan ja välitämme 2 syöttöparametriä.

lisää 2 3

# tulostaa $: n arvon? kaiku arvioimalla muuttujan todellinen arvo lainausmerkeissä
kaiku-e "Tulos = $?";

<< Siirry edelliseen osaan

Kiitos Juan Carlos Ortiz!


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   Nill-osoitin dijo

    En ole varma, mutta funktioiden palautuslauseketta käytetään vain palauttamaan kokonaisluku välillä 0 ja 255, kuten "exit" -virhekoodit, yleensä 0, jos kaikki on kunnossa, ja toinen numero muissa tapauksissa. Vaikka esimerkissä tämä toimii, mielestäni ei ole hyvä käytäntö palauttaa tulos takaisin.
    Siellä sanon hölynpölyä huh! silmä! ha!

  2.   johnk dijo

    Totuus jätti minut epäilemään. Joka tapauksessa funktioiden ongelmien välttämiseksi voimme korvata palautuksen kaikulla, jos toiminto pyrkii palauttamaan tai tulostamaan arvon tai merkkijonon.

  3.   Abel S.Big-vuori dijo

    On totta, että tämän ratkaisemiseksi voit käyttää bc-komentoa, sum-funktiossa voit käyttää: result = `echo $ 1 + $ 2 | bc -ql "

  4.   Luis Miguel dijo

    hyvä,

    Haluaisin tietää, mihin voin tallentaa bash-tiedostot, jotta ne toimisivat koko järjestelmässä, eikä se ole roskakorihakemisto, mutta voi olla kotona varmuuskopiointia varten.

    Kiitokset ja terveiset.

  5.   Joaquin dijo

    Paljon kiitoksia, aloitan käsikirjoituksista, ja totuus on, että tämä on erittäin hyödyllistä, jaat erittäin ystävällisesti tietosi!
    terveiset

    1.    käytetään Linuxia dijo

      Kiitos! Halata!
      Pablo

  6.   Cristhian dijo

    Syntaksivirhe: "(" odottamaton
    Saan virheen yritettäessä suorittaa esimerkkiä, kopioin sen täsmälleen samalla tavalla

    Mikä voi olla? olen Ubuntussa 14.10