Programmeerimine bashis - 2. osa

Teine osa sellest miniõpetus programmeerimine aastal sisse lööma, kus õpime kasutama CICLOS ja muud tööriistad, mis aitavad meil oma funktsionaalsust parandada skripte.

Kui tingimuslik

Ifi funktsiooniks on filtri rakendamine ja toimingu või ülesande täitmine iga rakendatud filtri tüübi jaoks. Selle struktuur on järgmine:

Kui [tingimus]; siis käsib elif käsud [tingimus]; siis muud käsud; fi käsud

Näide on kuvatud tsükli For kõrval selle vastavas jaotises.

Tsüklid

1. Kuigi: see täidab kõik käsu do ja tehtud vahel määratud käsklused seni, kuni tingimus on tõene. Kui tahame sellele edastada võrdlusoperaatoreid, peab avaldis olema sulgudes.

samal ajal kui CONDITION / COMMAND teevad käske

Näide: arvu korrutustabel

#! / bin / bash X = 1 kaja "Sisestage number ja vajutage sisestusklahvi", loe M #Silmus juhib, et X on väiksem või võrdne 10-ga, samal ajal kui [$ X –le 10] teeb #R-is salvestame X korrutamise MR = $ [X * M] # See korrutamine trükitakse ekraanile kaja "$ M * $ X = $ R" # Laskmise korral suurendame X väärtust 1 ühiku võrra, laseme X = $ X + 1 teha

2. For: salvestab muutuja elementide loendi, mida kasutatakse iga tsükli jaoks teatud toimingute tegemiseks.

elemendi VARIABLE jaoks tehke käsud

Näide: programm, mis kopeerib faili ühest kaustast teise, asendades vana faili.

# / bin / bash # Loome lähte- ja sihtkataloogid ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Paigutame end allika CD-le $ ORIGIN #Kõikidest failidest soovime ainult seda, mis on # kutsu FILE for FILE sisse * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f filtreerib meid tavalisi faile, kuna kataloogid pole meile # midagi head. –Nt filtreerib # faili „uuematest” kui sihtkaustast leitud # failid, kui [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; siis kaja "$ FILE kopeerimine ..." # kopeerime faili cp-ga cp $ FILE $ ARCH-DESTINATION fi valmis #We cd lähtekataloogist väljumiseks cd

Teine näide: skript, kus kasutaja peab arvama juhusliku arvu, mille arvuti on genereerinud.

# / bin / bash # Juhuslik arv genereeritakse vahemikus 1 kuni 10, see on # salvestatud juhuslikult RANDOM RANDOM = $ [$ RANDOM% 10 + 1], samal ajal kui [1] teeb kaja - n "Sisestage number:" loe NUM # Võrdle, kui kasutaja valitud number on # võrdne RANDOMiga; ärge unustage kasutama dollarit muutujate # väärtuste, mitte nende nimede hindamiseks, kui [“$ NUM –eq“ $ RANDOM ”]; siis kaja "Saite õigesti aru!" #break lubab tsükli lõpetada, samal ajal kui break # kui arv on väiksem kui RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; siis kaja "See on vähem" "Kui ei, siis on see suurem kui RANDOM muu kaja" See on suurem "on tehtud

3. Kuni: ülesehituselt üsna sarnane Whileiga, välja arvatud see, et kood käivitub alati, kui tingimuse hindamine on negatiivne, see tähendab, et programm jätkab "kuni tingimuse tekkimiseni"

kuni CONDITION / COMMAND käsk on tehtud

Näide: printige numbrid 10-20 kahanevas järjekorras

#! / bin / bash CONT = 20 # Niikaua kui loendur on väiksem kui 10 (-lt, "madalam # kui"), käivitatakse kood kuni [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT lahutatakse ühikust, mille järgi CONT- = 1 on tehtud

4. Vali: see viimane tsükkel on erijuhtum, kuna seda kasutatakse tavaliselt menüüde kiireks koostamiseks. See töötab sarnaselt For-silmusele.

vali VARIABLE tehtud käskude loendis

Näide: võimaldage kasutajal skripti jätkata või lõpetada.

#! / bin / bash #item on muutuja, mis vastab # kasutaja valitud valikutele. Jätka ja Lõpeta on talle saadaolevad #optsioonid, kuigi muid valikuid saab lisada # veel valige üksus jaotises Jätka lõpetamist tee #Kui kasutaja valib lõpetage programm, siis katkestusega väljume tsüklist. kui [$ item = "Lõpeta"]; siis vaheaeg tehtud
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.   Keskmiselt raske DIJO

    Ma arvan, et midagi sellist on: tar -cf - kataloog | (cd / muu / kataloog; tar -xvf -)

    Siis näeks see välja nagu / teine ​​/ kataloog / kataloog
    Nii tihendasin kataloogi ja dekompresseerite selle teises kohas ...

  2.   Miguel Ingel DIJO

    Tere, hea tuto, ma õpin seda teemat ja kõik on korras, ainult et ma pole suutnud koostada programmi, mis mind aitaks, et näha, kas saate mind aidata.

    Ma pean tegema tsükli, milles see saab parameetritena lähtefaili loendi, see loend toob ainult nimed (ilma laienditeta), nii et tsükkel teeb järgmist, otsige nimetatud kataloogis saadud nime (mida me otsime) , ekstraktige ja kopeerige fail (täisnimi juba koos laiendiga) ja absoluutne tee ning looge see teises sihtfailis.

    Siiani on mul järgmine:

    rida lugedes
    do
    kaja -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    done <testlist.txt Siiani lugesin faili, kõiki selle ridu, kuid ma ei saa seda panna seda faili otsima ja teavet välja võtma, kui aitate mind, siis palun, aitäh. Terviseks

  3.   Pamela galaviz DIJO

    Suur aitäh panuse eest 🙂

  4.   Mario Xavier DIJO

    Tere ... Loodan, et saate aidata järgmises praktikas ... Pakkige fail kataloogis tgz määratud kataloogis lahti, lisaks määrake kõigi olemasolevate kataloogide ja failide kasutaja ja rühm ning määrake failidele ja kataloogidele õigused
    märkus: failid on lugemiseks ja kirjutamiseks valmis
    kataloogide täitmise luba

  5.   johnk DIJO

    ARCH-DESTINATION on muutuja, kuhu soovime salvestada sihtfaili tee, salvestades koondamise. Seejärel märgime sellele muutujale muutuja DESTINATION, mis ülal sisaldab kausta Dokumendid teed ja lisame "muutuja" FILE, mis sisaldab faili nime. Kui see fail oleks näiteks list.doc, oleks muutuja ARCH-DESTINATION võrdne /home/Usuario/Documentos/listado.doc

  6.   Kasutame Linuxi DIJO

    See on eelmine artikkel. Sellele pääseb juurde aadressil http://usemoslinux.blogspot.com

    Kallistama! Paul.

  7.   Avameelne DIJO

    Tere hommikust semu, lihtsalt tänan teid, teie ajaveeb on väga hea, kuid ma ei saa Bashi programmeerimise esimest osa, kust saan tänu, tervitused

  8.   Saito Mordraw DIJO

    Kaks erakordset osa, minu siirad õnnitlused.

    Lihtsalt imeline.

  9.   Fredy DIJO

    Bien

  10.   Hugo DIJO

    Tere, ma koostan programmi CASE, mida ma tahan, et see teeks ja ma ei tea, kuidas näiteks:

    kaja Valib võimaluse:
    miss
    kaja 1. variant 1
    kaja 2. variant 2
    kaja 3. variant 3
    kaja 4. variant 4
    kaja 5. Välju
    loe var
    juhtum "$ var" in
    1)
    kaja "Valisite valiku 1"
    ;;
    2)
    kaja "Valisite valiku 2"
    ;;
    3)
    viskas välja "….."
    ;;
    4)
    viskas välja "…."
    ;;
    5)
    viskas välja "…"

    ;;
    *)
    kaja "vale variant"
    ;;
    et C

    ok, mida ma ei tea, kuidas seda teha, on see, et kui valin võimaluse 4, mis on väljumine, küsige, kas ma tõesti tahan väljuda, ja andke mulle kaks võimalust Y & N

    ja teine ​​on see, et kui valite muu kui numbrid 1..5, siis ärge hääletage skripti poolt minu poolt ...

    Kas aitaksite mind tänada.

  11.   DAPAMA21 DIJO

    Tere, alustasin skriptimist 1 kuu tagasi ja tänu teie skriptipostitustele. Ma olen teinud umbes 15-20. Tänan teid väga ette. Kuid nüüd on meie õpetaja andnud meile töö, milles olen soiku jäänud. Kuna õpetaja küsib:
    kataloogi edastades kopeerige koju kõik selles kataloogis olevad failid tähestiku järgi ja nimetage neile fail1 fail2 fail jne jne ... jne
    Nüüd olen leidmise või leidmise hetkel, tahtsin kasutada leidmist, kuid kui andsin talle veakoodi, kui panin selle dev null kaudu, siis keelatud õigused, siis eksin ja panen asukoha, kus ma olen:
    leidke $ 1 | grep "/ $ {1} \ $"
    aga loomulikult tuleb see kõik välja ...
    Suur aitäh, kui loete seda.
    Kui saaksite mind aidata, oleks see suur eelis.

  12.   luis DIJO

    Tahaksin, et aitaksite mind selles küsimuses.
    1.-Sisestage klaviatuuril täisarv ja kuvage kaks korda ning kolmekordistage see arv ekraanil. 2.- Koostage programm, et otsustada, kas klaviatuuriga sisestatud number jagub 3-ga või mitte.
    3.- Koostage programm, et leida summa: ???????? + ????????? ????????? ????????? ???????
    4.- Koostage programm summa 1 + 3 + 5 + 7 + 9 · · · + (2n + 1) leidmiseks.
    5.-Tehke programm, mis prindib ekraanile sõna Linux 10 korda
    6.-Tehke programm, mis prindib ekraanile sõna Linux kasutaja määratud arvu kordi.
    7.-Sisestage summa tundides ja teisendage need minutiteks ja sekunditeks.
    8.-Arvutage kolmnurga pindala
    9.-Sisestage klaviatuuril number, siis kui sisestate 2, peaks see olema ruut, 3 kuubikut, 4 kuni neljas ja nii edasi kuni 6.
    10 - Arvutage pension, mida õpilane peab maksma, tuleb sisestada eriala kood ja võlgnetud päevad:
    KOOD
    SPETSIAALSUS
    SUMMA
    PÄEVAS
    1
    ARVUTAMINE
    160
    1
    2
    HOOLDUS
    150
    1.5
    3
    SEKRETARIAAT
    140
    2
    4
    TURISM
    180
    2.5
    5
    RAAMATUPIDAMINE
    160
    1
    Peate näitama õpitavat eriala, pensioni maksumust, makseviivitust ja kogu makstavat summat.

  13.   charly DIJO

    Tere, kas keegi saaks mind aidata?
    Mul on vaja «taotleda kolme sõna klaviatuuri abil ja kuvada need tähestikulises järjekorras vahemikus A kuni z»
    Bashi või sh keeles LINUX porfaborrrr