Programmeerimine bashis - 3. osa

et turvaline meie mõisted Õpime 2 programmeerimiseks väga kasulikku tööriista, mis töötavad suurepäraselt Bashis. Õppige looma funktsioonid ja määratleda torujuhtmed võib alguses tunduda keeruline, kuid siis näeme tohutut kasulikkus et nad pakuvad meile.

Torud

Täpsemalt ja ilma liiga palju pöördeid võtmata on torujuhe meetod, mis võimaldab ühe protsessi väljundit suunata teise sisendiks, mis võimaldab rida eeliseid, nagu koodiridade vähendamine, tulemuste jaoks salvestusmuutujate vabastamine ja parendamine skripti efektiivsus.

Toru tunneb tavaliselt ära sümbol | mis võimaldab väljendeid liita; Kuigi seda kasutatakse vaikimisi, on torude loomiseks ka teisi võimalusi.

Näide: printige hiljutised kernelisõnumid

#dmesg võimaldab süsteemi käivitamisel näha hiljutisi kerneliteateid ja laaditud draivereid; saba prindib faili või käsu # viimased osad

dmesg | saba

Ehkki need võivad olla keerulised nii palju kui soovime, võimaldab torujuhtme põhistruktuur ühe käsu tulemust järgmise sisendina kasutada, mis võib anda uue käsu sisendi, kui jätkame järjestikuste torude lisamist.

funciones

Funktsioonid on lausete kogum, mis on rühmitatud nii, et neid saab mitu korda täita ilma, et peaksite neid uuesti kirjutama. See on samaväärne mõttega, et kui õpime toidutüüpi valmistama, kirjutame selle retsepti lehele ja iga kord, kui tahame seda toitu valmistada, uurime retsepti selle asemel, et kirjutada uus sama retseptiga leht.

Funktsioonide juures on võib-olla kõige olulisem võimalus edastada parameetreid, andmeid, mida nad nende töötlemiseks ja väljundi genereerimiseks kasutavad. Selle struktuur on järgmine:

function function-name {

protsessid

}

Näide: funktsioon, mis näitab teenuseid, mis töötavad TCP-protokollil. Samuti näeme, kuidas rohkem torusid paigaldada.

# Määratleme funktsiooni nime, see võib olla see, mis meile meeldib.

function services_tcp {

#cat liidab ja kuvab kausta / etc / services, mis on #, mis sisaldab kõiki teenuseid koos nendega seotud pordidega.

# esimene grep võtab loendi ja eemaldab kommentaarid, klahviga –v pöörame tulemuse ümber

# teine ​​grep näitab ainult neid, mis on seotud TCP-ga

kass / etc / services | grep –v "^ #" | grep tcp

}

Kui peame selle funktsiooni täitma, peame seda lihtsalt selle nimega kutsuma:

tcp_teenused

Sel juhul töötab see ilma parameetriteta; Juhul, kui tal neid on, peame need lisama, nii et funktsioon töötab korralikult, vastasel juhul ei tööta funktsioon korralikult. Tagastamise kasutamine võimaldab funktsioonil protsessi tulemusena väärtust tagastada.

Näide: sisendparameetritega funktsioon, mis arvutab 2 numbri summa.

#! / bin / bash
funktsiooni summa ()
{
# võimaldades saame operatsiooni sooritada jutumärkides
olgu "tulemus = $ 1 + $ 2"

#return võimaldab tagastada täisarvu. Kui tagastamine on täidetud, deponeeritakse väärtus muutujas $?
return $ tulemus;
}
 
Funktsioon Summa kutsutakse ja me edastame 2 sisendparameetrit.

lisage 2 3

#trükib $ väärtuse? kajaga, hinnates muutuja tegelikku väärtust jutumärkides
kaja -e "Tulemus = $?";

<< Mine eelmise osa juurde

Aitäh Juan Carlos Ortiz!


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   Nilli osuti DIJO

    Ma pole kindel, kuid funktsioonide return-lauset kasutatakse ainult täisarvu vahemikus 0–255, näiteks „exit” veakoodid, tavaliselt 0, kui kõik on korras, ja muudel juhtudel muud numbrit. Ehkki näites see toimib, ei ole minu arvates tulemuse tagastamisega hea tava.
    Ütlen seal jama, et ah! silm! ha!

  2.   johnk DIJO

    Tõde jättis minus kahtluse. Igal juhul võime funktsioonidega seotud probleemide vältimiseks asendada tagastuse kajaga juhul, kui funktsioon soovib väärtuse või stringi tagastada või printida.

  3.   Abel S. Suure mägi DIJO

    Tõsi, selle lahendamiseks võite kasutada käsku bc, summafunktsioonis saate kasutada: result = `echo $ 1 + $ 2 | bc -ql "

  4.   Luis Miguel DIJO

    hea,

    Tahaksin teada, kuhu saaksin bashi failid süsteemi laiemaks käitamiseks salvestada ja see pole prügikasti kataloog, kuid võib olla varukoopiate kodu.

    Tänud ja lugupidamine.

  5.   Joaquin DIJO

    Suur aitäh teile, alustan stsenaariumidest ja tõde on see, et see on väga kasulik, jagate väga lahkeid oma teadmisi!
    seoses

    1.    kasutame linuxi DIJO

      Aitäh! Kallistama!
      Pablo

  6.   CRISTHIAN DIJO

    Süntaksiviga: "(" ootamatu
    Näidet käivitades saan vea, kopeerisin selle täpselt samaks

    Mis saab olla? olen ubuntus 14.10