Programimi në bash - pjesa 2

Pjesa e dytë nga kjo mini-tutorial programimi në Përplas, ku mësojmë të përdorim ciklet dhe mjete të tjera që do të na ndihmojnë të përmirësojmë funksionalitetet e tonave scripts.

Nëse me kusht

Funksioni i Nëse është që të aplikoni një filtër dhe të kryeni një operacion ose detyrë për secilin lloj të filtrit të aplikuar. Struktura e saj është si më poshtë:

Nëse [kushti]; atëherë komandat elif [kusht]; atëherë tjetër komandon; komandat fi

Një shembull është treguar pranë lakut For në seksionin përkatës të tij.

Ciklet

1. Ndërsa: do të ekzekutojë të gjitha komandat e specifikuara ndërmjet do dhe bërë për sa kohë që kushti është i vërtetë. Nëse duam t’i kalojmë operatorëve të krahasimit, shprehja duhet të jetë në kllapa.

ndërsa KUSHTET / KOMANDA bëjnë komandat e bëra

Shembull: tabela e shumëzimit të një numri

#! / bin / bash X = 1 jehonë "Vendosni një numër dhe shtypni ENTER" lexoni M # Kontrolli i lakut që X është më i vogël ose i barabartë me 10 ndërsa [$ X –le 10] bëjnë # Në R ne ruajmë shumëzimin e X me MR = $ [X * M] # Ky shumëzim është shtypur në ekon eko "$ M * $ X = $ R" #Me le, ne e rrisim vlerën e X me 1 njësi le X = $ X + 1 bërë

2. Për: ruan një listë të elementeve në një ndryshore, e cila do të përdoret për të kryer operacione të caktuara me secilin cikël.

për të ndryshueshme në elemente të bëjë komandat e bëra

Shembull: programi që kopjon një skedar nga një dosje në tjetrën, duke zëvendësuar një skedar të vjetër.

# / bin / bash # Ne krijojmë direktori burimi dhe destinacioni ORIGJIN = / shtëpi / përdorues / Shkarkime DESTINATION = / shtëpi / përdorues / Dokumente # Ne pozicionohemi në burimin cd $ ORIGIN # Nga të gjithë skedarët, ne duam vetëm atë që është # thirrje FILE për FILE në * bëj ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f na filtron skedarët e rregullt, pasi drejtoritë nuk janë asgjë e mirë për ne. –Nt filtron # skedarë "më të rinj" sesa ato # që gjenden në dosjen e destinacionit nëse [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; pastaj jehoni "Kopjimi i $ FILE ..." # ne kopjojmë skedarin me cp cp $ FILE $ ARCH-DESTINATION fi bërë # Ne cd për të dalë nga dosja burimore cd

Një shembull tjetër: skenari ku përdoruesi duhet të gjejë një numër të rastësishëm të gjeneruar nga kompjuteri.

# / bin / bash # Një numër i rastësishëm gjenerohet nga 1 në 10, është # ruajtur në RANDOM RANDOM = $ [$ RANDOM% 10 + 1] ndërsa [1] bëni jehonë –n "Futni një numër:" lexoni NUM # Krahasoni nëse numri i zgjedhur nga përdoruesi është # i barabartë me RANDOM; mos harroni të përdorni $ për të vlerësuar #vlerat e variablave dhe jo emrat e tyre nëse ["$ NUM –eq" $ RANDOM "]; pastaj jehonë "E kuptove mirë!" #break lejon përfundimin e ciklit gjatë ndërprerjes # Nëse numri është më i vogël se RANDOM elif ["$ NUM –gt" $ RANDOM "]; atëherë jehona "lessshtë më pak" "Nëse jo, është më e madhe se e rastësishme tjetër jehonë" ISSHT greater më e madhe "fi bërë

3. Derisa: mjaft i ngjashëm në strukturë me Ndërsa, përveç që kodi ekzekuton gjithmonë ndërsa vlerësimi i gjendjes është negativ, domethënë, programi vazhdon të ekzekutojë "derisa të ndodhë kushti"

derisa KUSHTET / KOMANDA të bëjnë komandat e bëra

Shembull: shtypni numrat 10-20 në rend zbritës

#! / bin / bash CONT = 20 # Për sa kohë që numëruesi është më pak se 10 (-lt, "më i ulët # se") kodi ekzekutohet deri në [$ CONT -lt 10]; bëj jehonë "COUNTER $ CONT" # Një CONT zbritet nga një njësi le CONT- = 1 bërë

4. Zgjidhni: ky cikël i fundit është një rast i veçantë, pasi zakonisht përdoret për të bërë menutë shpejt. Funksionon ngjashëm me lak For.

zgjidhni VARIABLE në LISTN e komandave të bëra

Shembull: jepni përdoruesit aftësinë për të vazhduar ose përfunduar skenarin.

#! / bin / bash #item është një variabël që i përgjigjet asaj që zgjedh # përdoruesi, Vazhdo dhe Përfundo janë # opsionet në dispozicion të tij, megjithëse mund të shtohen opsione të tjera # më shumë zgjedh artikullin në Vazhdo përfundo bëj # Nëse përdoruesi zgjedh përfundojmë programin, pastaj me pushim dalim nga cikli. nëse [$ item = "Mbaro"]; atëherë break fi bërë
Faleminderit Juan Carlos Ortiz!

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   Mesatarja e Vështirë dijo

    Unë mendoj se diçka e tillë: tar -cf - Drejtoria | (cd / other / directory; tar -xvf -)

    Atëherë do të dukej si / një tjetër / direktori / Drejtori
    Në atë mënyrë unë kompresova një Drejtori dhe ju e dekompresoni atë në një vend tjetër.

  2.   Miguel Angel dijo

    Përshëndetje, mirë tuto, po mësoj për këtë temë dhe gjithçka është në rregull, vetëm se nuk kam qenë në gjendje të bëj një program që më ndihmon, shikoni nëse mund të më ndihmoni ju lutem.

    Më duhet të bëj një cikël, në të cilin do të marrë si parametra një listë të një skedari burimor, kjo listë sjell vetëm emra (pa zgjatje), në mënyrë që cikli të bëjë sa më poshtë, të kërkojë emrin e marrë të marrë në një direktori (e cila është atë që do të kërkojmë), ekstraktoni dhe kopjoni skedarin (emri i plotë tashmë me zgjerim) dhe rruga absolute dhe krijojeni atë në një skedar tjetër destinacioni.

    Deri më tani kam sa vijon:

    ndërsa lexoni rreshtin
    do
    jehonë - e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    bërë <testlist.txt Deri më tani kam lexuar skedarin, çdo rresht që ka, por nuk mund ta bëj atë të kërkojë atë skedar dhe të nxjerrë informacionin, nëse mund të më ndihmoni ju lutem, faleminderit. Brohoritje

  3.   Pamela galaviz dijo

    Faleminderit shumë për kontributin

  4.   Mario Xavier dijo

    pershendetje ... Shpresoj se mund te ndihmoni ne praktiken tjeter ... Zinxhironi skedarin ne tgz ne direktorine e specifikuar, pervec specifikimit te perdoruesit dhe grupit per te gjithe drejtorite dhe skedaret ekzistuese, dhe caktimin e lejeve per skedaret dhe drejtorite
    shënim: skedarë të gatshëm për lexim dhe shkrim
    lejet e ekzekutimit të drejtorive

  5.   johnk dijo

    ARCH-DESTINATION është një variabël në të cilën ne duam të ruajmë rrugën e skedarit të destinacionit, përveç për tepricë. Pastaj, kësaj ndryshore ne i tregojmë ndryshoren DESTINATION, e cila më sipër përmban shtegun në dosjen Documents dhe shtojmë FILE "variabël", e cila përmban emrin e skedarit. Nëse ajo skedar do të ishte, për shembull, list.doc, ndryshorja ARCH-DESTINATION do të ishte e barabartë me /home/Usuario/Documentos/listado.doc

  6.   Le të përdorim Linux dijo

    Isshtë artikulli i mëparshëm. Ju mund të përdorni atë në http://usemoslinux.blogspot.com

    Perqafo! Paul.

  7.   I sinqertë dijo

    Mirëmëngjes shok thjesht faleminderit, blogu juaj është shumë i mirë, por unë nuk mund ta marr pjesën e parë të Programimit në Bash, ku e marr falënderime, përshëndetje

  8.   Saito Mordraw dijo

    Dy pjesë të jashtëzakonshme, urimet e mia të sinqerta.

    Thjesht e mrekullueshme.

  9.   Fredy dijo

    Megjithëse

  10.   Hugo dijo

    Përshëndetje, unë jam duke bërë një program me një RAST, çfarë dua të bëjë dhe nuk e di se si, për shembull:

    echo Zgjedh një mundësi:
    humbas
    jehona 1. opsioni 1
    jehona 2. opsioni 2
    jehona 3. opsioni 3
    jehona 4. opsioni 4
    jehona 5. Dalja
    lexo var
    rasti "$ var" në
    1)
    jehona "Ju zgjodhët opsionin 1"
    ;;
    2)
    jehona "Ju zgjodhët opsionin 2"
    ;;
    3)
    hodhi "… .."
    ;;
    4)
    hodhi "…".
    ;;
    5)
    hodhi "…"

    ;;
    *)
    jehonë "opsion i gabuar"
    ;;
    se C

    ok ajo që nuk di si të bëj është që kur zgjedh opsionin 4 që është dalja, pyesni nëse vërtet dua të dal dhe më jepni 2 opsione Y & N

    dhe tjetra është se kur zgjidhni diçka tjetër përveç numrave 1..5 mos më votoni nga skenari.

    A mund të më ndihmoni faleminderit.

  11.   DAPAMA21 dijo

    Përshëndetje, fillova skriptimin 1 muaj më parë dhe falë postimeve tuaja në skenare. Do të kem bërë rreth 15-20. Faleminderit shume paraprakisht. Por tani mësuesi ynë na ka dhënë një punë për të cilën unë jam ngecur. Meqenëse mësuesi pyet:
    kalimi i një direktorie, kopjoni në shtëpinë tuaj të gjitha skedarët që janë në atë direktori alfabetikisht dhe emërtimin e tyre file1 file2 etj ... etj ...
    Tani jam në momentin e gjetjes ose gjetjes, unë doja të përdorja find por kur i dhashë kodin e gabimit ndërsa e vendosa përmes dev null, lejet nuk pranohen, atëherë gaboj dhe vendos lokalizimin që jam këtu:
    lokalizoni $ 1 | grep "/ $ {1} \ $"
    por sigurisht me këtë dalin të gjithë ...
    Faleminderit shumë nëse e lexoni.
    Nëse mund të më ndihmoni do të ishte një favor i madh.

  12.   Luis dijo

    Do të doja të më ndihmonit për këtë.
    1.-Vendosni një numër të plotë në tastierë dhe shfaqeni dy herë dhe trefishojeni atë numër në ekran. 2.- Bëni një program për të vendosur nëse një numër i futur nga tastiera është i pjesëtueshëm me 3 apo jo.
    3.- Bëni një program për të gjetur shumën e: ???????? + ?????? ???????
    4.- Bëni një program për të gjetur shumën 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Bëni një program që shtyp fjalën Linux në ekran 10 herë
    6.-Bëni një program që shtyp fjalën Linux në ekran disa herë të treguara nga një përdorues.
    7.-Vendosni një shumë në orë dhe shndërroni ato në minuta dhe sekonda.
    8.-Njehsoni sipërfaqen e një trekëndëshi
    9.-Vendosni një numër me tastierë, atëherë nëse futni 2 duhet të jetë në katror, ​​3 kubikë, 4 në të katërtin dhe kështu me radhë deri në 6.
    10-Llogaritni pensionin që duhet të paguajë një student, duhet të futet kodi i specialitetit dhe ditët e prapambetura:
    KODI
    SPECIALITETI
    SHUMA
    KOHEZGJATJA PER DITE
    1
    Llogaritja
    160
    1
    2
    INFERMIERI
    150
    1.5
    3
    SEKRETARIATI
    140
    2
    4
    TURIZMI
    180
    2.5
    5
    KONTABILITETI
    160
    1
    Ju duhet të tregoni specialitetin që po studioni, koston e pensionit, vonesën dhe shumën totale që duhet të paguhet.

  13.   Charly dijo

    Përshëndetje, a mund të më ndihmojë dikush?
    Më duhen «Kërko tre fjalë me tastierë dhe shfaq ato sipas rendit alfabetik nga A në z»
    Në gjuhën Bash ose sh për LINUX porfaborrrr