Ohjelmointi bashissa - osa 2

Toinen osa tästä mini-opetusohjelma ohjelmointi Kemut, jossa opimme käyttämään syklit ja muita työkaluja, jotka auttavat meitä parantamaan palvelumme toimintoja skriptejä.

Jos ehdollinen

If: n tehtävänä on käyttää suodatinta ja suorittaa jokaiselle käytetylle suodatintyypille jokin toiminto tai tehtävä. Sen rakenne on seuraava:

Jos [ehto]; sitten elif-komennot [ehto]; sitten muut komennot; fi -komennot

Esimerkki näkyy For-silmukan vieressä vastaavassa osiossa.

syklit

1. Vaikka: se suorittaa kaikki komennot, jotka on määritetty tekemisen ja tekemisen välillä, kunhan ehto on tosi. Jos haluamme välittää vertailuoperaattorit sille, lausekkeen on oltava suluissa.

kun taas CONDITION / COMMAND tekevät komennot

Esimerkki: luvun kertotaulukko

#! / bin / bash X = 1 kaiku "Syötä numero ja paina ENTER" lue M #Silmukka ohjaa, että X on pienempi tai yhtä suuri kuin 10, kun taas [$ X –le 10] tee #R: ssä tallennamme X MR: llä = $ [X * M] # Tämä kertolasku tulostetaan ruudulle kaiku "$ M * $ X = $ R" # Annetaan suurennetaan X: n arvoa 1 yksiköllä annetaan X = $ X + 1 valmis

2. For: tallentaa luettelon muuttujaan sisältyvistä elementeistä, joita käytetään tiettyjen toimintojen suorittamiseen jokaisella jaksolla.

for VARIABLE in ELEMENTS tee komentoja

Esimerkki: ohjelma, joka kopioi tiedoston kansiosta toiseen korvaamalla vanhan tiedoston.

# / bin / bash #Voimme luoda lähde- ja kohdehakemistot ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Sijoitamme lähdekoodiin $ ORIGIN # Kaikista tiedostoista haluamme vain sen, joka on # kutsu FILE tiedostolle * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f suodattaa meille tavalliset tiedostot, koska hakemistot eivät ole meille mitään hyödyllisiä. –Nt suodattaa # tiedostoa “uudemmiksi” kuin kohdekansiossa olevat #, jos [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; sitten kaiku "Kopioi $ FILE ..." # kopioimme tiedoston cp cp $ FILE $ ARCH-DESTINATION fi valmis #We cd poistua lähdekansiosta cd

Toinen esimerkki: komentosarja, jossa käyttäjän on arvattava tietokoneen tuottama satunnaisluku.

# / bin / bash # Satunnaisluku syntyy 1: stä 10: een, se # tallennetaan RANDOM RANDOM -arvoon = $ [$ RANDOM% 10 + 1], kun taas [1] toistaa kai- n "Syötä numero:" lue NUM # Vertaa, jos käyttäjän valitsema numero on # yhtä suuri kuin RANDOM; muista käyttää arvoa $ muuttujien #arvojen ja niiden nimien arvioimiseksi, jos [“$ NUM –eq“ $ RANDOM ”]; sitten kaiku "Sinulla on oikein!" #break sallii silmukan lopettamisen ja tauon # Jos luku on pienempi kuin RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; sitten kaiku "Se on vähemmän" "Jos ei, se on suurempi kuin RANDOM muut kaiku" IT ON suurempi "tehty

3. Kunnes: rakenteeltaan melko samanlainen kuin While, paitsi että koodi suoritetaan aina kun ehdon arviointi on negatiivinen, eli ohjelma jatkaa suoritusta "kunnes ehto esiintyy"

kunnes CONDITION / COMMAND tee komentoja

Esimerkki: tulosta numerot 10-20 laskevassa järjestyksessä

#! / bin / bash CONT = 20 # Niin kauan kuin laskuri on alle 10 (-lt, "alempi #than"), koodi suoritetaan, kunnes [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT vähennetään yksiköllä, jonka CONT- = 1 on tehty

4. Valitse: tämä viimeinen sykli on erikoistapaus, koska sitä käytetään yleensä valikoiden tekemiseen nopeasti. Se toimii samalla tavalla kuin For-silmukka.

valitse VARIABLE luettelosta tehdyistä komennoista

Esimerkki: anna käyttäjälle mahdollisuus jatkaa tai lopettaa komentosarja.

#! / bin / bash #item on muuttuja, joka vastaa # käyttäjän valitsemaan, Jatka ja Valmis ovat # käytettävissä olevat vaihtoehdot, vaikka muita vaihtoehtoja voidaan lisätä # lisää valitse kohde Jatka Valmis tee # Jos käyttäjä valitsee lopeta ohjelma, sitten lopetamme jakson. jos [$ item = "Valmis"]; sitten tauko fi tehty
Kiitos Juan Carlos Ortiz!

13 kommenttia, jätä omasi

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   Keskivaikea dijo

    Luulen jotain tällaista: tar -cf - Hakemisto | (cd / muu / hakemisto; tar -xvf -)

    Sitten se näyttäisi olevan / toinen / hakemisto / Hakemisto
    Tällä tavoin pakkasin hakemiston ja sinä purat sen toisesta paikasta….

  2.   Miguel Angel dijo

    Hei, hyvä tuto, olen oppinut aiheesta ja kaikki on hyvin, vain en ole pystynyt tekemään ohjelmaa, joka auttaa minua, jotta voisitko auttaa minua.

    Minun täytyy tehdä sykli, jossa se saa parametreina luettelon lähdetiedostosta, tämä luettelo tuo vain nimet (ilman laajennusta), jotta sykli suorittaa seuraavan, etsi mainittu nimi, joka on vastaanotettu hakemistosta (joka on jota etsimme), pura ja kopioi tiedosto (koko nimi jo laajennuksella) ja absoluuttinen polku ja luo se toiseen kohdetiedostoon.

    Toistaiseksi minulla on seuraava:

    kun luet riviä
    do
    echo -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    done <testlist.txt Olen toistaiseksi lukenut tiedoston, kaikki sen rivit, mutta en voi panna sitä etsimään kyseistä tiedostoa ja purkamaan tietoja. Kippis

  3.   Pamela galaviz dijo

    Paljon kiitoksia panoksesta 🙂

  4.   Mario Xavier dijo

    Hei ... Toivon, että voit auttaa seuraavassa käytännössä ... Pura tiedosto tgz: stä määritettyyn hakemistoon sen lisäksi, että määrität käyttäjän ja ryhmän kaikille olemassa oleville hakemistoille ja tiedostoille ja hakemistoille käyttöoikeudet
    Huomautus: tiedostot ovat valmiita lukemista ja kirjoittamista varten
    hakemistojen suorittamislupa

  5.   johnk dijo

    ARCH-DESTINATION on muuttuja, johon haluamme tallentaa kohdetiedoston polun, redundanssia varten. Sitten tähän muuttujaan ilmoitetaan muuttuja DESTINATION, joka yllä sisältää polun Documents-kansioon ja lisätään "muuttuja" FILE, joka sisältää tiedoston nimen. Jos kyseinen tiedosto olisi esimerkiksi list.doc, muuttuja ARCH-DESTINATION olisi yhtä suuri kuin /home/Usuario/Documentos/listado.doc

  6.   Käytetään Linuxia dijo

    Se on edellinen artikkeli. Pääset siihen osoitteessa http://usemoslinux.blogspot.com

    Halata! Paul.

  7.   Vilpitön dijo

    Hyvää huomenta kaveri vain kiitos, blogisi on erittäin hyvä, mutta en voi saada ensimmäistä osaa ohjelmoinnista Bashissa, josta saan sen kiitos, terveisiä

  8.   Saito Mordraw dijo

    Kaksi ylimääräistä osaa, vilpittömät onnitteluni.

    Yksinkertaisesti ihana.

  9.   Fredy dijo

    Bien

  10.   Hugo dijo

    Hei, teen ohjelman CASE: lla, mitä haluan sen tekevän enkä tiedä miten, esimerkiksi:

    kaiku Valitsee vaihtoehdon:
    kaiku
    kaiku 1. vaihtoehto 1
    kaiku 2. vaihtoehto 2
    kaiku 3. vaihtoehto 3
    kaiku 4. vaihtoehto 4
    kaiku 5. Poistu
    lukea var
    tapaus "$ var" sisään
    1)
    kaiku "Valitsit vaihtoehdon 1"
    ;;
    2)
    kaiku "Valitsit vaihtoehdon 2"
    ;;
    3)
    heitti pois "….."
    ;;
    4)
    heitti pois "…."
    ;;
    5)
    heitti pois "…"

    ;;
    *)
    kaiku "väärä vaihtoehto"
    ;;
    ESAC

    ok, en tiedä miten tehdä, on se, että kun valitsen vaihtoehdon 4, joka on poistua, kysy, haluanko todella poistua, ja annan minulle 2 vaihtoehtoa Y & N

    ja toinen on se, että kun valitset jotain muuta kuin numerot 1 ... 5, älä äänestä minua komentosarjassa ...

    Voitteko auttaa minua kiitos.

  11.   DAPAMA21 dijo

    Hei, aloitin komentosarjat 1 kuukausi sitten ja kiitos komentosarjaviesteistäsi. Olen tehnyt noin 15-20. Kiitos paljon etukäteen. Mutta nyt opettajamme on antanut meille työpaikan, josta olen pysähtynyt. Koska opettaja kysyy:
    välittää hakemiston, kopioi kotiisi kaikki hakemistossa olevat tiedostot aakkosjärjestyksessä ja nimeä ne tiedostoksi tiedosto1 tiedosto2 jne ... jne ...
    Nyt olen löydön tai paikannuksen hetkellä, halusin käyttää hakua, mutta antaessani sille virhekoodin, kuten laitoin sen dev nullin kautta, käyttöoikeudet evätään, sitten väärin ja laitan paikannuksen olen täällä:
    etsi $ 1 | grep "/ $ {1} \ $"
    mutta tietysti tämän kanssa he kaikki tulevat ulos ...
    Paljon kiitoksia, jos luet sen.
    Jos voit auttaa minua, se olisi suuri palvelus.

  12.   luis dijo

    Haluaisin sinun auttavan minua tässä.
    1.-Syötä kokonaisluku näppäimistöllä ja näytä kahdesti ja kolminkertaista numero näytöllä. 2.- Tee ohjelma päättämään, voidaanko näppäimistöllä syötetty numero jakaa 3: lla vai ei.
    3.- Tee ohjelma löytääksesi summan: ???????? + ????????? + ????????? ????????? ???????
    4.- Tee ohjelma löytääksesi summa 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Tee ohjelma, joka tulostaa sanan Linux ruudulle 10 kertaa
    6.-Tee ohjelma, joka tulostaa sanan Linux näytölle käyttäjän ilmoittamien kertojen määrällä.
    7.-Syötä summa tunteina ja muunna ne minuutteihin ja sekunteihin.
    8.-Laske kolmion pinta-ala
    9.-Syötä numero näppäimistöllä, ja jos kirjoitat 2, sen pitäisi olla neliö, 3 kuutioinen, 4 neljänteen ja niin edelleen jopa 6.
    10-Laske opiskelijan maksama eläkkeesi, syötetään erikoiskoodi ja jälkikäteen maksettavat päivät:
    KOODI
    ERIKOISUUS
    MONTO
    PÄIVÄN AIKANA
    1
    LASKENTA
    160
    1
    2
    SAIRAANHOITO
    150
    1.5
    3
    SIHTEERISTÖ
    140
    2
    4
    MATKAILU
    180
    2.5
    5
    KIRJANPITO
    160
    1
    Sinun on esitettävä opiskelemasi erikoisuus, eläkekustannukset, maksukyvyttömyys ja maksettava kokonaismäärä.

  13.   Charly dijo

    Hei, voisiko joku auttaa minua?
    Tarvitsen «Pyydä kolme sanaa näppäimistöllä ja näytä ne aakkosjärjestyksessä välillä A - Z»
    Bash- tai sh-kielellä LINUX porfaborrrr