Bash teoria

/ bin / bash

0. Aurkibidea

  1. Jende gehienari gertatzen zaizkion gauzak
  2. Gidoi baten egitura
  3. Inprimatu pantailan
  4. Irakurri erabiltzailea INPUT
  5. Kalkuluak bash
  6. Baldintzak
  7. Begiztak
  8. funtzio
  9. Getops

1. Jende gehienari gertatzen zaizkion gauzak

/ bin / bash edo / bin / sh

Gure scriptak exekutatzerakoan makinak egiten duen lehen gauzetako bat zein shell-ekin egin behar duen aztertzea da. Gaur egungo linux sistema gehienetan / Bin / sh esteka bat da / bin / bash, baina ez da beti horrela gertatzen, adibidez erabiltzen dituzten banaketetan busybox ekartzen dute Sh eta normalean ere ekartzen dute Bash, baina erabiltzen baduzu / Bin / sh, ez da Bash-ekin exekutatuko. Horregatik gomendatzen dut beti erabiltzea / bin / bash.

Unicode vs ASCII

Inoiz pentsatu al duzu zergatik ezin dituzun "¿" edo "ñ" erabili zure scriptetan? Edo azentuak erabili? Gidoi interaktiboetan nahiko gogaikarria izan daiteke. Hori gertatzen da Bash-en kodetze lehenetsia ASCII delako edo ingelesezko karaktere multzoa. Aldatzeko, gure gidoiari Unicode erabili nahi dugula esan besterik ez dugu. Horretarako lerro bat gehitu behar duzu komandoaren interpretatzailearen ondoren:

# - * - KODIFIKAZIOA: UTF-8 - * -

Kontuz, garrantzitsua da lerro hau gidoiaren hasieran egotea.

Egin script-a exekutagarria

Kuriosoa da zenbat jendek zuzentzen dituen gidoiak «$ bash script.sh" ordez "$ ./script.sh'Azken finean, horretarako definitu dugu shell bat.

Exekuzio baimenak gehitzeko, exekutatu behar dituzu:

sudo + x script.sh
Gure script exekutagarria bada, gure PATH-era gehitu dezakegu eta gure ordenagailuko edozein lekutatik / karpetatik exekutagarria bihur dezakegu. Horretarako, gure erabiltzailearen .bashrc edo / etc / bashrc lerroari gehitu behar diogu
BIN = "karpeta" PATH = "$ BIN $ PATH" gidoiak dauzkagun karpeta
Bash araua da aldagai izenak maiuskula guztietan idaztea. Jende askok ez du arau hau betetzen, baina gidoi luzeentzat eskertzekoa da, askoz ere irakurgarriagoak direlako

2. Gidoi baten egitura

  1. burua
  2. Aldagai globalen definizioa
  3. Laguntza
  4. funtzio
  5. Gorputz nagusia

Goiburuan bertan adierazi nahi dugu zein shell erabili nahi dugun eta kodeketa. Funtzioen abantaila behin bakarrik idatziz errepikatzen den kodea berrerabiltzea eta script-a errazago ulertzea da, 100 lerrotik gorako kodea oso erabilgarria da.

Funtzioak erabili ahal izateko, gure scriptaren gorputz nagusiaren aurretik definitu behar dira. Eta gure script guztien maila globalean aldagaiak erabili nahi baditugu, bai gorputz nagusian eta bai funtzioetan, denaren hasieran definitu behar ditugu, goiburuaren ondoren.

Azkenean, praktika ona da laguntzailearen funtzioa idaztea gure scriptak txarto edo parametro txarrekin funtzionatzen duenean. Bistan denez, kasu horietan gidoitik berehala irten nahi dugu, funtzioak irakurri gabe. Horretarako erabil ditzakegu:

function help () {echo "" "Gure ondo formateatutako laguntza testua." "" irten bada [[-z $ 1 || $ 1 == "-h" || $ 1 == "--help"]]; gero lagundu fi

Laguntza funtzioari "irten" gehitzen badiogu, scriptetik irtengo gara laguntza exekutatzen dugun bakoitzean, adibidez errore mezuen ondoren, etab. Kode lerro batzuk gordetzen ditugu.

Baldintzak pantailan bistaratzeko laguntza adierazten du eta gidoia parametro gabe exekutatzen bada edo -h / –help zehazten bada, irten egiten da. Begiratzen baduzu, hori da linux programa gehienen portaera estandarra.

3 komatxoen oihartzuna erabiltzeak lerro-jauziak erabiltzea ahalbidetzen du, mezua oihartzuna bistaratzeko utzi gabe. Lerro anitzeko mezuetarako askoz erosoagoa da oihartzuna behin bakarrik erabiltzea.

3. Inprimatu pantailan

Bash pantailan inprimatzeko 2 komando nagusi daude: «galdu"Eta"printf«. Biak bezain azkarrak dira eta biak bash-aren parte dira. Hasiberrientzako desberdintasun nagusia da oihartzunak lerro berria gehitzen duela amaieran, eta «printf"Ez du.

Oihartzuna oso ona da eta jende gehienak erabiltzen duena da, hala ere, erabiltzailearen SARRERA irakurtzerakoan edo testu prozesaduraren bidez fitxategietatik hartutako aldagaiak inprimatu nahi dituzunean, gauza bitxiak gerta daitezke. Normalean erraz konpontzen dira, komatxo bikoitzak bakunetara edo alderantziz aldatzea edo erreferentzia aldakorrak komatxoetatik ateratzea bezain erraza. «Echo»Gauza arraroak egiten ditu nola konpilatu zen arabera, beti Ubuntu erabiltzen badugu edo beti Fedora erabiltzen badugu, horrek ez digu eragiten, baina banaketa aldatzen badugu.

Horregatik erabiltzen dut «printf«, Horrek ez dit buruko minik ematen eta, gainera, gehiago jokatzen du«printf»C-tik edo«inprimatu»Python-en, hau oso garrantzitsua da zure scriptak beste programazio lengoaia batera eraman nahi badituzu.

Eztabaida zabalago bat egiteko bisita dezakezu Unix & Linux-en galdera hau Stack Exchange-n.

4. Irakurri erabiltzailearen SARRERA

Gure scriptaren izenaren ondoren eta SARTU tekla sakatu aurretik idazten dugun guztia automatikoki aldagai berezietan gordetzen da. Aldagai hauek $ X motakoak dira, non X zenbaki bat den.

«$0»Gure gidoiaren izena adierazten du eta«$1»Beranduago idatzi dugun guztia aldakorra da. Adibidez:

cat << EOF >> test.sh #! / bin / bash # - * - KODIFIKAZIOA: UTF-8 - * - printf "\ $ 0 = $ 0 \ n" printf "\ $ 1 = $ 1 \ n" printf "\ $ 2 = $ 2 \ n "EOF chmod + x script.sh ./script.sh my file.txt

Test script bat sortzen dugu, exekutagarria egiten dugu eta 2 parametrorekin exekutatzen dugu. Pantailaren irteera lortuko dugu:

$ 0 = ./script.sh $ 1 = nire $ 2 = file.txt

Komatxoak erabiliz "nire fitxategia.txt" "$ 1" -era pasa genezake.

Erabiltzaile baten SARRERA ere irakur dezakegu "irakurri" komandoarekin, parametroa non gorde nahi dugun aldagaia zuzenean adieraziz. Adibidez:

printf "Nola duzu izena? \ n" irakurri NAME printf "Kaixo, $ NAME. \ n"
Kontuz aldagaien esleipenarekin. "$ VAR = content" -ek errore bat sortuko du, ezin da tarterik utzi berdin ikurraren, aldagaiaren izenaren eta edukiaren artean. Erabilera zuzena "VAR = content" da.

5. Kalkuluak Bash-en

Horretarako erabil dezakegu «espr«, Kalkulu konplexurik egin behar ez dugun bitartean. Bi gauza aipatu behar dira, lehenengoa «espr»Zenbaki osoak bakarrik onartzen ditu, bigarrena zatiketak emaitza osoa ematen duela, erabil ditzakegun gainerakoak ikusteko«%".

Normalean, expr-en emaitza aldagai bati esleitu nahi diogu. Hori bi eratara egin dezakegu:

VAR2 = `expr $ VAR1 / 10` VAR2 = $ (expr $ VAR1 / 100)

Saltatu ere egin dezakezu «espr»Parentesi bikoitzak erabiliz:

VAR2 = $ (($ VAR1 / 100))
«Azalpen gehiagorako«espr»Edo zenbaki osoak erabiltzen dituen alternatiba, begiratu dezakezu KZKG ^ gaara sarrera hau.

6. Termino

Dagoeneko oso modu zabalean idatzi da «if" 'bestela" 'elif»Eta baldintzak. Horren inguruan irakur dezakezu:

Kortxete soilen erabileraren arteko aldea nabarmendu nahi dut, «[]«, Eta parentesi bikoitzak,«[[]]«, Baldintzetarako. Parentesi bikoitzekin baldintza osagarriak erabil ditzakegu:

  • «&&»Eta
  • «||»For edo

Erabiltzeko "&&"Eta"||»Kortxete soilekin zati bakoitza kortxeteen artean banandu behar da. Laguntza exekutatu behar den ikusteko scriptaren zatian erabilitako adibidea hau da:

[-z "$ 1"] || bada ["$ 1" == "-h"] || ["$ 1" == "--help"]]; gero lagundu fi

Akatsak saihesteko aldagai izenak komatxo artean idatzi behar izatetik ere aurrezten gaitu. Adibidez:

[$ 1 = 1] bada; ondoren printf "Parametroa 1. berdina da"; fi if ["$ 1" = 1]; ondoren printf "Parametroa 1. berdina da"; fi if [[$ 1 = 1]]; ondoren printf "Parametroa 1. berdina da"; fi

Script.sh inolako parametrorik gabe exekutatzen bada, lehenengo kasuak errore bat emango luke:

bash: [: =: operadore unarioa espero da
Bash-en "=" eta "==" biak modu berean interpretatzen dira. Hori ez da gertatzen "=" aldagaiak esleitzeko soilik erabiltzen den beste programazio lengoaia batzuetan.

Hitz egin ez dena «Kasu«, Sinplifikatzeko erabiltzen da«if«. Has gaitezen hasieran, ez dugunean «if»Kode guztiak exekutatuko dira. Baldintza bat gehitzen badugu «if»Bi kasu izango ditugu, bata kodearen blokea«if»Eta bloke hau exekutatzen ez den beste kasua.

Bat gehitzen badugu «bestela«Bi kasu ere izango ditugu, baina bi kasu horiek aurrekoekin alderatuta desberdinak dira. Zeren orain bi baldintzako kode bloke egongo dira, A eta B, eta C blokea, hau da, programaren gainerakoa. A edo B exekutatuko dira, eta C. Aurreko kasuan A eta C ziren edo C bakarrik.

Idazteko baldintzak ekiditeko «bada / bestela"barruan"bestela»Eta kodearen irakurketa errazteko, sortu zen«elif«. Aurrekoaren araberako baldintza ugari ditugunean, adibidez zenbaki barrutia edo mota:

VAR1 = $ 1 bada [[$ VAR1 = 1]]; ondoren printf "1 \ n" elif [[$ VAR1 = 2]]; ondoren printf "2 \ n" elif [[$ VAR1 = 3]]; ondoren printf "3 \ n" bestela printf "none \ n" fi

Azken «kasuanelif»Baldintza asko irakurriko dira. Kasu horretan, prozesu hau arindu egiten da:

VAR1 = $ 1 kasu $ VAR 1) printf "1 \ n" ;; 2) printf "2 \ n" ;; 3 | 4) printf "3 edo 4, \ n" araberakoa da ;; *) printf "none \ n" ;; C hori

Aldagai bat irakurriko da, kasu honetan VAR1, eta ikusiko da kasuren baten baliokidea den, hala ez bada, "*" kasu lehenetsia exekutatuko da. Puntu eta koma bikoitzak «baliokideak diraapurtu«, Esaten dute«Kasu»Hori amaitu behar da.

«Case»« Sekuentzia gisa ere erabil daitekeif«, Horretarako« ;; & »(jarraitu) erabili behar duzu« ;; »ordez. (gelditu).

7. Begiztak

Oso loop gutxi ezagutzen dira edozein programazio lengoaiatan. Bash-en dira «bitartean" 'arte"Eta"egiteko«. Dagoeneko blogean idatzi da hauei buruz:

Bi begizta mota daude «egiteko«, Motakoak direnak«$ VARentzat LOQUESEAn»Eta zer dira C motakoak«$ ((I = 0; I <= 10; I ++))«. Bigarren begizta mota «egiteko»Oso erabilgarriak dira, 3 zati ditu begizta hasieran:

  • Aldagaien aitorpena eta hastapena (kasu honetan "I = 0" aldagai laguntzailea).
  • Exekuzio baldintza (I 10 baino txikiagoa edo berdina izan arte).
  • Aldagai laguntzailearen gehikuntza

Nire ustez denetan begizta indartsuena da. Adibide bat, zenbaki guztiak 0tik 10era inprimatzen dituena, biak barne:

#! / bin / bash for ((I = 0; I <= 10; I ++)); "$ I \ n" egin inprimatu

8. Funtzioak

Bash-ek egiten uzten ez dizkigun gauza batzuk daude, ezta? Lehen begiratuan, bash funtzioek 3 gauza egitea eragozten dute: aldagai lokalak funtzioetan deklaratzea, parametroak funtzioetara pasatzea eta parametroak itzultzea. Denak du irtenbidea.

Ez egin horrelakorik:

#! / bin / bash VAR = 1 printc "$ VAR \ n" funtzioa kaixo () {VAR = 2 printf "$ VAR \ n"} kaixo printf "$ VAR \ n"

Hau 1, 2 eta 2 pantailan inprimatzen da.

Aldagai lokalak aldarrikatzeko, gehitu «tokiko»Adierazterakoan:

#! / bin / bash VAR = 1 printf "$ VAR1 \ n" function foo () {local VAR1 = 2 printf "$ VAR1 \ n"} printf "$ VAR1 \ n" foo printf "$ VAR1 \ n"

Honek 1, 1, 2, 1 inprimatzen ditu pantailan.

Nola pasatu parametroak funtzio bati?

#! / bin / bash # - * - KODIFIKAZIOA: UTF-8 - * - funtzioa kaixo () {printf "Kaixo $ 1 \ n"}

printf "Nola duzu izena? \ n"
irakurri VAR1
kaixo $ VAR1

Nola itzultzen dira parametroak?

#! / bin / bash # - * - KODIFIKAZIOA: UTF-8 - * - funtzioa kaixo () {printf "Hello holita"} printf "Nola duzu izena? \ n" irakurri VAR1 VAR1 = $ (kaixo) # HEMEN DA printf "$ VAR1 $ VAR2 \ n"

Ikus dezakezunez, honek bi eragozpen ditu, parametro bakarra itzul dezakezu, hau da, vector bektorea izan daiteke, eta parametro bat itzuli nahi baduzu, ezin duzu pantailan inprimatu funtzio horretatik.

Funtzioei buruzko gauza gehiago aurki ditzakezu [url = https: //blog.desdelinux.net/programando-en-bash-parte-3/] Usemoslinux artikulu honetan [/ url].

9. Getops

Script konplexuak sortzeko Bash-i buruz jakin behar duzun azken gauza bat «getops«. Aukerak scriptera pasatzeko agindua edozein dela ere erabiltzen da. Desabantaila bakarra da aukera laburrei soilik eragiten diela:

#! / bin / bash # - * - ENCODING: UTF-8 - * - VARC = 0 function help () {printf "Help message \ n" exit} if [[-z $ 1]]; orduan lagundu fi getopts bitartean: ha: b: c OPT; egin $ OPT h) laguntza kasuan ;; :) lagundu ;; a) VARA = $ OPTARG ;; b) VARB = $ OPTARG ;; c) VARC = 1 ;; \?) laguntza ;; esac done # # VARA, VARB eta VARC-ekin gauzak egiten dituen gidoiaren bloke nagusia

«getopts»Aukerak banan-banan irakurtzen ditu, beraz begizta behar da.

2 aukera mota pasa daitezke «erabilizgetopts':

  • Banderak izeneko parametroak, kasu honetan -c edo -h. Erabili nahi dugun letrarekin zehazten dira. Aldagai boolearrak bezalakoak dira, «Egia»(Are) edo«false"(Ez daude hemen).
  • Parametroak lotutako argumentuekin, -a edozer, -b edozer. Nahi dugun letrarekin zehazten dira azpiko puntu batekin. Argumentua OPTARGn gordetzen da (izen hau aldatu ezina da).
Hasierako puntu bikoitzak akatsik ez erakusteko dira.

Zer egiten du gidoi honek?

Laguntza mezua bistaratzen du aukerarik ematen ez denean, "-h" parametroa pasatzen denean, parametro baliogabea pasatzen denean (adibidez "-x", "\?" Bidez egiten da) edo argumentu gabeko parametro baliozkoa (":"). Gainerako kasuetan "-c" -ren presentzia 1 gisa gordetzen du VARC-n, eta "-a" eta "-b" balioekin VARA eta VARB-n.


Artikuluaren edukia gure printzipioekin bat dator etika editoriala. Akats baten berri emateko egin klik hemen.

20 iruzkin, utzi zurea

Utzi zure iruzkina

Zure helbide elektronikoa ez da argitaratuko.

*

*

  1. Datuen arduraduna: Miguel Ángel Gatón
  2. Datuen xedea: SPAM kontrolatzea, iruzkinen kudeaketa.
  3. Legitimazioa: Zure baimena
  4. Datuen komunikazioa: datuak ez zaizkie hirugarrenei jakinaraziko legezko betebeharrez izan ezik.
  5. Datuak biltegiratzea: Occentus Networks-ek (EB) ostatatutako datu-basea
  6. Eskubideak: Edonoiz zure informazioa mugatu, berreskuratu eta ezabatu dezakezu.

  1.   elav esan zuen

    MAISU. Ez dut U_U gehiago esaten

  2.   Miguel esan zuen

    Kaixo, oso artikulu ona.
    Kaixo sudo + x baimenak emateko jarri duzu chmod + x ordez

    1.    Henry esan zuen

      $ sudo chmod + x script.sh
      (Zehatzago esateko, jeje)

      Ah, zorionak eta eskerrik asko!

  3.   suzko hotza esan zuen

    Oso mezu ona, egia esan zorionak ematen dizkizuet, segi horrela, Agurrak

  4.   Gustavo esan zuen

    Eta gidoia exekutatzean ikusgai egotea nahi baduzu, pausoz pauso, aldagaiak, baldintzak eta dena nola jokatzen duten ikusita, erabil dezakezu:

    sh -x gidoia

    dagokionez

  5.   dago esan zuen

    Tutoretzaren ZATIA. Bikaina eta oso ondo azalduta.
    Eskerrik asko.

  6.   Gabriel esan zuen

    Gaiari buruzko mezu bikaina

  7.   Mario Guillermo Zavala Silva esan zuen

    Oso interesgarria eta oso garrantzitsua esker informazioagatik ...
    ANIMOAK !!!

  8.   Brooklynetik ez esan zuen

    Eskerrik asko guztioi zorionak emateagatik, Miguel komandoari dagokionez, sarrera aldatzen uzten ez didanean argitaratu ondoren. Imajinatzen dudan elav egin beharko du.

  9.   Adrian esan zuen

    Oso ondo!

    Lehenik eta behin zoriondu nahi zaitut mezuagatik, ulertzeko erraza iruditu zait eta benetan laguntzen du bash-en ondo programatzeko jarraibideak betetzea, batez ere programatzen hasitako jendearentzat.

    Hala ere, nire ustez zuzendu beharko liratekeen xehetasun pare bat aurkitu ditut.

    Lehenengoa: «2 atalean. GIDOIAREN EGITURA »funtzioa ez dago itxita, eta horrek arazoak sor ditzake script batean exekutatzean.
    Irtenbidea "irten" komandoaren ostean giltza bat gehitzea litzateke.

    Bigarrena: «4 atalean. IRAKURRI ERABILTZAILEAREN SARRERA ”baieztatzen duzu erabiltzaileak sar ditzakeen parametroak $ 0tik infinituraino doazela, hala ere,“ bash ”$ 0 eta $ 9 artean bakarrik interpretatuko da, $ 10 $ 1 + 0 berdina izango baita.
    Arazo hau konpontzeko, "shift" komandoa erabil dezakezu aldagai hauek eskuratzeko. Edo zehaztu aldagaia "$ {10}" giltza artean, bash-ek balioak batera har ditzan, ez $ 1 + 0 gisa.

    Gehiagorik gabe, agurrak!

    1.    Brooklynetik ez esan zuen

      Eskerrik asko zure iruzkinagatik. Erabat huts egin du irtenbidearen erabilera zuzena azaltzeak, scriptean eta funtzioetan. {10} dolarrei dagokionez ezin izan dut inoiz hainbeste gauza egin, beraz ez dut arazo hori topatu, ona da horretarako irtenbidea dagoela jakitea (gaur ikasitako gauza berria gurutzatu dut already) .

  10.   chanio esan zuen

    Mila esker artikuluagatik! Aipatzen dituzun gauza batzuek oraindik ez zuten argitzerik. Adibidez, getops.
    Pantailako irteeren zatian, ez duzu aipatu geroago aipatu duzun katua ...
    katua <
    ***************************************
    * INprimaki hau oso adierazgarria da *
    ***************************************
    EOF

    Zure adibidean:
    katua << EOF >> test.sh
    Bi gauza aipatu behar dira ... >> 'erantsi' da, hau da, komando bera errepikatuz gero, script osoa bikoiztuta edukiko duzu ... Bat bakarrik erabili beharko zenuke ...
    cat << EOF> script.sh
    Bai, script.sh ere deitu behar zaio
    Gero sartu
    [-z "$ 1"] || bada ["$ 1" == "-h"] || ["$ 1" == "–help"]]; orduan
    laguntzeko
    fi

    Idatzi beharko litzatekeela uste dut ...
    [[-z "$ 1"] || bada ["$ 1" == "-h"] || ["$ 1" == "–help"]]; orduan
    ...

    BASH-tik askoz ere gehiago dago ezagutzeko.
    "OINARRIZKOAK" izenburua eman diezaiokezu? 🙂
    Adibidez, 'testers' parametroak -z bezalakoak hutsik dauden ikusteko edo -f fitxategi gisa badagoen ikusteko.

    Eskerrik asko berriro zure ahaleginagatik.
    alberto

  11.   clow_eriol esan zuen

    Bash script tutorial oso ona!

  12.   ocz esan zuen

    -- KODIFIKAZIOA: UTF-8 --

    Lerro hori ikusi nuen lehen aldia da karaktere kodeketa bash script batean ezartzeko. Badirudi Python-en Bash baino tipikoagoa dela. Benetan beharrezkoa al da? Google-n erreferentzia bat bilatu dut baina ez dut ezer aurkitzen, ba al duzu gai honi buruz hitz egiten duen estekarik? Zehazki lerro horren egokitasunari buruz.

    Nire ustez, script-ak Bash-en UTF-8 erabiliz idazteko, testu fitxategia honela gorde behar duzu (BOM gabe) eta inguruneko aldagai batzuk (LANG eta LC_ *) behar bezala ezarrita edukitzea.
    Orduan, jakina, beharrezkoa da exekutatutako komandoak ASCII ez diren beste kodeketa batzuetarako prestatzea. Adibidez, maiuskulara joan nahi badugu, ez dirudi horrek funtzionatzen duenik:
    «Echo áéíóú | tr az AZ »
    o:
    «Echo áéíóú | tr [: lower:] [: upper:] »
    eta hobe da erabiltzea:
    «Echo áéíóú | awk '{print toupper ($ 0)}' ».

    1.    Brooklynetik ez esan zuen
    2.    zu bezalako borriquito esan zuen

      Norbaitek zuzendu nau, baina kodeketa lerro hori (# -- KODIFIKAZIOA: UTF-8 --) Ez du zerikusirik bash-rekin edo shellarekin: iruzkin lerroa da (# -rekin hasten da) eta EDITOREAri fitxategiaren kodeketa idazteko gidoia (vim, emacs ...) erabiltzen dugula esateko balio du.

      Izan ere, bashek ez du horrelako lerro bat ikusten, iruzkin lerro bat delako.

  13.   JoRgE-1987 esan zuen

    Tutorial bikaina, Sysadmin-ek Scripting-en Bash-en jakitea ezinbestekoa denez, erabilgarria da guztietarako.

    Oso oso ondo!

    Agurrak!

  14.   Edward Cuomo esan zuen

    Edonorentzat baliagarria bada, hona hemen zure scriptak sortzeko hainbat erabilera eta adibide: https://github.com/reduardo7/hsabx

  15.   Lito Beltza esan zuen

    Oso ondo. Nire gidoietan gehitzeko gauza berriak. Encodig eta printf gauzek ez zituzten.
    Eskerrik asko!!!

  16.   xxxtonixxx esan zuen

    Oso artikulu ona! Hau gogokoentzat gordetzen dut, ondo legoke gaizki dagoena zuzendu eta eduki gehiagorekin zabaltzea ere. Txalo zaparrada info guzti honengatik !!!!

bool (egia)