Programmēšana bash - 3. daļa

līdz drošs mūsu jēdzieni Mēs uzzināsim 2 ļoti noderīgus programmēšanas rīkus, kas perfekti darbojas Bash. Iemācieties radīt funkcijas un definēt caurules sākumā var šķist sarežģīta, bet tad mēs redzēsim milzīgo lietderība ka viņi mūs nodrošina.

Caurules

Konkrēti, un neveicot pārāk daudz pagriezienu, cauruļvads ir metode, kas ļauj virzīt viena procesa izvadi kā otra ievadi, kas ļauj virkni priekšrocību, piemēram, koda rindiņu samazināšanu, atbrīvošanu no atmiņas mainīgajiem lielumu iegūšanai un uzlabošanu skripta efektivitāte.

Caurule parasti tiek atpazīta ar simbolu | kas ļauj savienot izteicienus; Lai gan tas tiek izmantots pēc noklusējuma, ir arī citi veidi, kā izveidot caurules.

Piemērs: izdrukājiet jaunākos kodola ziņojumus

#dmesg ļauj jums redzēt jaunākos kodola ziņojumus un ielādētos draiverus # sistēmas palaišanas laikā; aste izdrukā faila vai #komanda pēdējās daļas

dmesg | asti

Lai gan tie var būt sarežģīti, cik mēs vēlamies, cauruļvada pamatstruktūra ļauj vienas komandas rezultātu izmantot kā ievadi nākamajai, kas var nodrošināt jaunas komandas ievadi, ja mēs turpinām pievienot secīgas caurules.

funciones

Funkcijas ir paziņojumu kopums, kas ir sagrupēts tā, lai tos varētu izpildīt vairākas reizes, tos nepārrakstot. Tas ir līdzvērtīgi domām, ka, iemācoties gatavot ēdienu, mēs uzrakstīsim tā recepti uz lapas, un katru reizi, kad vēlamies pagatavot šo ēdienu, mēs konsultējamies ar recepti, nevis pārrakstām jaunu lapu ar to pašu recepti.

Varbūt vissvarīgākais par funkcijām ir iespēja nodot parametrus, datus, kurus viņi izmantos, lai tos apstrādātu un ģenerētu izvadi. Tās struktūra ir šāda:

funkcija function-name {

procesi

}

Piemērs: funkcija, kas parāda pakalpojumus, kas darbojas TCP protokolā. Mēs varam arī redzēt, kā uzlikt vairāk cauruļu.

# Mēs definējam funkcijas nosaukumu, tas var būt tas, kas mums patīk.

funkcija services_tcp {

#cat saista un parāda mapes / etc / services saturu, kas ir #, kas satur visus pakalpojumus ar saistītajām ostām.

# the first grep ņem sarakstu un noņem komentārus, ar –v mēs apgriežam rezultātu

# otrais grep parāda tikai tos, kas saistīti ar TCP

kaķis / utt / pakalpojumi grep –v "^ #" | grep tcp

}

Kad mums ir jāizpilda šī funkcija, mums tā vienkārši jāsauc:

tcp_pakalpojumi

Šajā gadījumā tas darbojas bez parametriem; Gadījumā, ja tie ir, mums tie ir jāpievieno, lai funkcija darbotos pareizi, pretējā gadījumā funkcija nedarbosies pareizi. Izmantojot atgriešanu, funkcija funkcija var atgriezt vērtību procesa rezultātā.

Piemērs: funkcija ar ievades parametriem, kas aprēķina 2 skaitļu summu.

#! / bin / bash
funkciju summa ()
{
# ar ļaujim veikt darbību pēdiņās
ļaujiet "rezultāts = $ 1 + $ 2"

#return ļauj atgriezt vesela skaitļa vērtību. Kad atgriešana ir izpildīta, vērtība tiks noglabāta mainīgā $?
atgriezt $ rezultātu;
}
 
# Summa funkcija tiek izsaukta, un mēs nododam 2 ieejas parametrus.

pievienot 2 3

# izdrukā $ vērtību? ar atbalss novērtējot mainīgā faktisko vērtību pēdiņās
atbalss -e "Rezultāts = $?";

<< Pāriet uz iepriekšējo daļu

Paldies Huanam Karlosam Ortizam!


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   Nila rādītājs teica

    Es neesmu pārliecināts, bet funkciju atgriešanās paziņojums kalpo tikai tam, lai atgrieztu veselu skaitli no 0 līdz 255, piemēram, kļūdas kodus "exit", parasti 0, ja viss ir kārtībā, un citu numuru citiem gadījumiem. Lai gan piemērā tas darbojas, es nedomāju, ka ir laba prakse atgriezt rezultātu ar atdevi.
    Tur es saku bezjēdzību huh! acs! ha!

  2.   Huanks teica

    Patiesība man lika šaubīties. Jebkurā gadījumā, lai izvairītos no problēmām ar funkcijām, atgriešanos varam aizstāt ar atbalss gadījumā, ja funkcija cenšas atgriezt vai izdrukāt vērtību vai virkni.

  3.   Ābels S. Lielais kalns teica

    Tiesa, lai to atrisinātu, varat izmantot komandu bc, summas funkcijā varat izmantot: result = `echo $ 1 + $ 2 | bc -ql`

  4.   Luis Miguel teica

    labi,

    Es vēlētos uzzināt, kur es varu saglabāt bash failus, lai tie darbotos visā sistēmā, un tas nav atkritumu tvertnes direktorijs, bet varētu būt dublēšanas vieta.

    Paldies un pateicos.

  5.   Joaquin teica

    Liels paldies, es sāku ar scenārijiem, un patiesība ir tāda, ka tas ir ļoti noderīgi, jūs ļoti laipni dalāties savās zināšanās!
    Sveicieni

    1.    izmantosim linux teica

      Paldies! Apskāviens!
      Pablo

  6.   Kristīne teica

    Sintakses kļūda: "(" negaidīts
    Mēģinot palaist piemēru, tiek parādīta kļūda, es to nokopēju tieši tāpat

    Kas var būt? es esmu ubuntu 14.10