Pwogramasyon nan bach - pati 3

Pou sekirite nou konsèp Nou pral aprann 2 zouti trè itil pou pwogram ki travay parfe nan Bash. Aprann kreye fonksyon epi defini tuyaux pouvwa sanble konplèks nan premye, men Lè sa a, nou pral wè imans la sèvis piblik ke yo bay nou.

Tiyo

Espesyalman, epi san yo pa pran twòp vire, yon tiyo se yon metòd ki pèmèt dirije pwodiksyon an nan yon pwosesis kòm opinyon nan yon lòt, ki pèmèt yon seri de avantaj, tankou diminye liy nan kòd, dispanse ak varyab depo pou rezilta yo ak amelyore efikasite nan script la.

Yon tiyo jeneralman rekonèt pa gen senbòl la | ki pèmèt konekte ekspresyon; Malgre ke li se itilize pa default, gen lòt fason yo kreye tiyo.

Egzanp: enprime dènye mesaj Kernel yo

#dmesg pèmèt ou wè dènye mesaj Kernel ak chofè chaje # pandan sistèm bòt; ke enprime pati ki sot pase yo nan yon dosye oswa # lòd

dmesg | ke

Malgre ke yo ka konplike otan ke nou vle, estrikti debaz la nan yon tiyo pèmèt rezilta a nan yon sèl lòd yo dwe itilize kòm opinyon nan pwochen an, ki ka bay opinyon pou yon nouvo lòd si nou kenbe ajoute youn apre lòt tiyo.

fonksyon

Fonksyon yo se yon seri deklarasyon ke yo gwoupe ansanm pou yo ka egzekite plizyè fwa san yo pa bezwen reyekri yo. Li ekivalan a panse ke lè nou aprann kwit yon kalite manje nou pral ekri resèt li yo sou yon fèy, epi chak fwa nou vle kwit manje sa a nou konsilte resèt la olye pou yo reyekri yon nouvo fèy ak resèt la menm.

Petèt bagay ki pi enpòtan sou fonksyon se posibilite pou pase paramèt, done yo ke yo pral itilize nan pwosesis yo ak jenere yon pwodiksyon. Estrikti li se jan sa a:

fonksyon non-fonksyon {

pwosesis

}

Egzanp: fonksyon ki montre sèvis ki travay sou pwotokòl tcp la. Nou ka wè tou kijan pou aplike plis tiyo.

# Nou defini yon non fonksyon, li ka youn nou renmen.

fonksyon sèvis_tcp {

#cat concatenates epi montre sa ki nan folder nan / elatriye / sèvis, ki se # ki gen tout sèvis sa yo ak pò ki asosye yo.

# premye grep la pran lis la epi li retire kòmantè yo, avèk –v nou envèse rezilta a

# dezyèm grep la montre sèlman moun ki gen rapò ak tcp

chat / elatriye / sèvis | grep –v "^ #" | grep tcp

}

Lè nou bezwen egzekite fonksyon sa a nou jis bezwen rele li pa non li:

tcp_services

Nan ka sa a li travay san paramèt; Nan evènman an ke li genyen yo, nou dwe ajoute yo pou fonksyon an fonksyone byen, sinon fonksyon an pa pral mache byen. Sèvi ak retounen pèmèt yon fonksyon retounen yon valè kòm yon rezilta nan pwosesis la.

Egzanp: fonksyon ak paramèt opinyon ki kalkile sòm total la nan 2 nimewo.

#! / bin / bash
fonksyon sòm ()
{
# ak kite nou ka egzekite operasyon an andedan quotes yo
kite "rezilta = $ 1 + $ 2"

#retounen pèmèt retounen valè antye. Yon fwa yo retounen nan egzekite, yo pral valè a dwe depoze andedan varyab la $?
retounen $ rezilta;
}
 
# Fonksyon sòm yo rele epi nou pase 2 paramèt opinyon.

ajoute 2 3

# enprime valè $? ak eko evalye valè aktyèl la nan varyab la nan quotes
eko -e "Rezilta = $?";

Mèsi Juan Carlos Ortiz!


Kontni an nan atik la respekte prensip nou yo nan etik editoryal. Pou rapòte yon erè klike sou isit la.

7 kòmantè, kite ou

Kite kòmantè ou

Adrès imèl ou pa pral dwe pibliye. Jaden obligatwa yo make ak *

*

*

  1. Responsab pou done yo: Miguel Ángel Gatón
  2. Objektif done yo: Kontwòl SPAM, jesyon kòmantè.
  3. Lejitimasyon: konsantman ou
  4. Kominikasyon nan done yo: done yo pa pral kominike bay twazyèm pati eksepte pa obligasyon legal.
  5. Done depo: baz done anime pa rezo Occentus (Inyon Ewopeyen)
  6. Dwa: Nenpòt ki lè ou ka limite, refè ak efase enfòmasyon ou yo.

  1.   Nill konsèy diro

    Mwen pa fin sèten, men se deklarasyon an retounen nan fonksyon yo sèlman itilize retounen yon nonb antye relatif ant 0 ak 255, tankou kòd yo erè nan "sòti", jeneralman 0 si tout bagay se amann ak yon lòt nimewo pou lòt ka yo. Malgre ke nan egzanp lan sa a travay, mwen pa panse ke li se yon bon pratik retounen rezilta a ak retounen.
    La a mwen di yon istwa san sans hein! je! ha!

  2.   John diro

    Verite a kite m 'ak dout. Nan nenpòt ka, pou fè pou evite pwoblèm ak fonksyon yo, nou ka ranplase retounen nan ak eko nan ka a ki fonksyon an ap chèche retounen oswa enprime yon valè oswa fisèl.

  3.   Abel S. Mount Big diro

    Se vre, yo rezoud sa a ou ka itilize lòd la bc, nan fonksyon an sòm ou ka itilize: rezilta = `eko $ 1 + $ 2 | bc -ql`

  4.   Luis Miguel diro

    bon,

    Mwen ta renmen konnen ki kote mwen ka sove dosye yo bach sa yo ke yo kouri sistèm lajè e ke se pa anyè a bin, men yo ka kay la fè kopi backup.

    Mèsi ak konsiderasyon.

  5.   Joaquin diro

    Mèsi anpil, mwen kòmanse ak Scripts yo, ak verite a se ke sa a se trè itil, ou se trè janti yo pataje konesans ou!
    Concerne

    1.    kite a itilize Linux diro

      Mèsi! Anbrase!
      Pòl

  6.   CRISTHIAN diro

    Sentaks erè: "(" inatandi
    Mwen jwenn yon erè lè m ap eseye kouri egzanp lan, mwen kopye li egzakteman menm bagay la

    Ki sa ki ka? mwen sou ubuntu 14.10