Programiranje u bashu - 2. dio

Drugi dio ovoga mini-udžbenik programiranje u Tresnuti, gdje učimo koristiti ciklusa i drugi alati koji će nam pomoći da poboljšamo funkcionalnosti našeg skripta.

Ako je uvjetni

Funkcija If je primijeniti filtar i izvršiti operaciju ili zadatak za svaku vrstu primijenjenog filtra. Njegova je struktura sljedeća:

Ako je [uvjet]; zatim naredbe elif [uvjet]; zatim else naredbe; fi naredbe

Primjer je prikazan pored petlje For u odgovarajućem odjeljku.

Ciklusi

1. While: izvršavat će sve naredbe specificirane između do i done dok je uvjet istinit. Ako mu želimo proslijediti operatore usporedbe, izraz mora biti u zagradama.

dok CONDITION / COMMAND rade naredbe izvršene

Primjer: tablica množenja broja

#! / bin / bash X = 1 echo "Unesite broj i pritisnite ENTER" pročitajte M # Petlja kontrolira da je X manje ili jednako 10 dok [$ X –le 10] do # U R pohranjujemo množenje X s MR = $ [X * M] # Ovo množenje ispisuje se na odjeku zaslona "$ M * $ X = $ R" # S letom, vrijednost X povećavamo za 1 jedinicu, neka je X = $ X + 1 gotovo

2. Za: sprema popis elemenata u varijablu koja će se koristiti za izvođenje određenih operacija sa svakim ciklusom.

za VARIABLE u ELEMENTS rade naredbe izvršene

Primjer: program koji kopira datoteku iz jedne mape u drugu, zamjenjujući staru datoteku.

# / bin / bash #Utvrđujemo izvorne i odredišne ​​direktorije ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Smještamo se u izvorni cd $ ORIGIN # Od svih datoteka želimo samo onu koja je # call FILE for FILE u * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f filtrira nam redovne datoteke, jer direktoriji # ništa nisu dobri za nas. –Ne filtrira # datoteke „novije“ od onih # pronađene u odredišnoj mapi ako [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; zatim odjeknite "Kopiranje $ FILE ..." # kopiramo datoteku cp cp $ FILE $ ARCH-DESTINATION fi gotovo #We cd za izlaz iz izvorne mape cd

Još jedan primjer: skripta u kojoj korisnik mora pogoditi slučajni broj koji generira računalo.

# / bin / bash # Slučajan broj generira se od 1 do 10, # se sprema u RANDOM RANDOM = $ [$ RANDOM% 10 + 1] dok [1] do echo –n “Unesite broj:„ pročitajte NUM # Usporedite je li broj koji je korisnik odabrao # jednak RANDOM; ne zaboravite koristiti $ za procjenu #vrijednosti varijabli, a ne njihova imena ako [“$ NUM –eq“ $ RANDOM ”]; zatim odjeknite "Dobro ste shvatili!" #break omogućuje završavanje petlje dok se prekida #Ako je broj manji od RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; onda odjekni "Manji je" "Ako ne, veći je od SLUČAJNOG, inače odjekuje" TO JE veći "

3. Do: po strukturi prilično sličan Dok, osim što se kod uvijek izvršava dok je ocjena stanja negativna, to jest, program nastavlja izvršavati "sve dok se uvjet ne dogodi"

dok CONDITION / COMMAND ne izvrše naredbe

Primjer: ispišite brojeve 10-20 u padajućem redoslijedu

#! / bin / bash CONT = 20 #Sve dok je brojač manji od 10 (-lt, “niže # nego”), kôd se izvršava do [$ CONT -lt 10]; eho "COUNTER $ CONT" #A CONT oduzima se jedinici neka je CONT- = 1 gotovo

4. Odaberite: ovaj posljednji ciklus je poseban slučaj, jer se obično koristi za brzo stvaranje jelovnika. Djeluje slično petlji For.

odaberite VARIABLE na POPISU izvršenih naredbi

Primjer: dajte korisniku mogućnost da nastavi ili završi skriptu.

#! / bin / bash #item je varijabla koja odgovara na ono što # korisnik odabere, Nastavi i Završi su mu # opcije dostupne, iako se mogu dodati i druge opcije # još odaberite stavku u Nastavi Završi učini # Ako korisnik odabere završite program, a zatim s prekidom izlazimo iz ciklusa. if [$ item = "Finish"]; zatim razbiti fi gotovo
Hvala Juan Carlos Ortiz!

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Srednje teško dijo

    Mislim da je otprilike ovako: tar -cf - Directory | (cd / ostalo / direktorij; tar -xvf -)

    Tada bi to izgledalo kao / drugi / direktorij / direktorij
    Na taj sam način komprimirao direktorij, a vi ga dekomprimirate na drugom mjestu….

  2.   Miguel Angel dijo

    Pozdrav, dobri učitelju, učim o toj temi i sve je u redu, samo što nisam uspio napraviti program koji mi pomaže, da vidim možete li mi pomoći.

    Moram napraviti ciklus, u kojem će kao parametre dobiti popis izvorne datoteke, ovaj popis donosi samo imena (bez nastavka), tako da ciklus čini sljedeće, potražite navedeno ime primljeno u direktoriju (koji je onaj koji ćemo potražiti), izdvojite i kopirajte datoteku (puno ime već s nastavkom) i apsolutni put i stvorite je u drugoj odredišnoj datoteci.

    Zasad imam sljedeće:

    dok se čita redak
    do
    odjek -e "$ linija"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    gotovo <testlist.txt Do sada sam pročitao datoteku, svaki red koji ima, ali ne mogu je potražiti i izvući informacije, ako mi možete pomoći, hvala. Živjeli

  3.   Pamela galaviz dijo

    Najljepša hvala na doprinosu 🙂

  4.   Mario Xavier dijo

    bok ... nadam se da možeš pomoći u sljedećoj praksi ... Raspakirajte datoteku u tgz u navedenom direktoriju, uz specificiranje korisnika i grupe za sve postojeće direktorije i datoteke i dodjeljivanje dozvola datotekama i direktorijima
    napomena: datoteke spremne za čitanje i pisanje
    dopuštenje za izvršenje direktorija

  5.   johnk dijo

    ARCH-DESTINATION je varijabla u kojoj želimo spremiti put odredišne ​​datoteke, osim za suvišnost. Zatim ovoj varijabli ukazujemo na varijablu DESTINATION, koja gore sadrži put do mape Dokumenti, a mi dodajemo "varijablu" DATOTEKU koja sadrži ime datoteke. Da je ta datoteka, na primjer, list.doc, varijabla ARCH-DESTINATION bila bi jednaka /home/Usuario/Documentos/listado.doc

  6.   Koristimo Linux dijo

    To je prethodni članak. Možete mu pristupiti na http://usemoslinux.blogspot.com

    Zagrliti! Pavao.

  7.   Frank dijo

    Dobro jutro prijatelju, samo hvala, tvoj je blog jako dobar, ali ne mogu dobiti prvi dio Programiranja u Bashu, gdje ga imam, hvala, pozdrav

  8.   Saito Mordraw dijo

    Dva izvanredna dijela, iskrene čestitke.

    Jednostavno divno.

  9.   Fredy dijo

    Bien

  10.   Hugo dijo

    Pozdrav, izrađujem program sa CASE, što želim i ne znam kako, na primjer:

    echo Odabire opciju:
    odjek
    odjek 1. opcija 1
    odjek 2. opcija 2
    odjek 3. opcija 3
    odjek 4. opcija 4
    odjek 5. Izlaz
    čitati var
    slučaj "$ var" u
    1)
    odjek "Odabrali ste opciju 1"
    ;;
    2)
    odjek "Odabrali ste opciju 2"
    ;;
    3)
    izbaciti "….."
    ;;
    4)
    izbaciti "…."
    ;;
    5)
    izbaciti "…"

    ;;
    *)
    odjek "pogrešna opcija"
    ;;
    ESAC

    ok ono što ne znam kako je to je da kad odaberem opciju 4 koja treba izaći, pitam želim li stvarno izaći i dajem mi 2 mogućnosti Y & N

    a druga je da kad odaberete nešto drugo osim brojeva 1..5, nemojte glasati za mene iz skripte ....

    Možete li mi pomoći, hvala.

  11.   DAPAMA21 dijo

    Pozdrav, počeo sam skriptirati prije mjesec dana i zahvaljujući tvojim postovima skripti. Odradio bih oko 1-15. Unaprijed puno hvala. Ali sada nam je naša učiteljica dala posao u kojem sam stagnirala. Budući da učitelj pita:
    prosljeđujući direktorij, kopirajte kući sve datoteke koje se nalaze u tom abecedi i abecedno ih imenujte file1 file2 itd ... itd ...
    Sada sam u trenutku pronalaska ili lociranja, želio sam upotrijebiti find, ali kada mu dajem kôd pogreške dok sam ga stavljao kroz dev null, odbijena odobrenja tada griješim i stavljam locate ovdje sam:
    pronađite $ 1 | grep "/ $ {1} \ $"
    ali naravno s ovim svi izlaze ...
    Puno vam hvala ako ste ga pročitali.
    Ako mi možete pomoći, bila bi to velika usluga.

  12.   Luis dijo

    Volio bih da mi pomognete u ovome.
    1.-Unesite cijeli broj tipkovnicom i prikažite dvaput i utrostručite taj broj na zaslonu. 2.- Napravite program koji će odlučiti je li broj koji je unijela tipkovnica djeljiv sa 3 ili ne.
    3.- Napravite program za pronalaženje zbroja: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- Napravite program za pronalaženje zbroja 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Napravite program koji 10 puta ispisuje riječ Linux na zaslon
    6.-Napravite program koji ispisuje riječ Linux na zaslon onoliko puta koliko je korisnik naznačio.
    7.-Unesite iznos u satima i pretvorite ih u minute i sekunde.
    8.-Izračunaj površinu trokuta
    9.-Unesite broj na tipkovnici, a ako unesete 2, on bi trebao biti kvadrat, 3 kocke, 4 do četvrte i tako do 6.
    10-Izračunajte mirovinu koju student mora platiti, mora se unijeti šifra specijalnosti i zaostali dani:
    KODIRATI
    SPECIJALITET
    IZNOS
    TRAJANJE PO DANU
    1
    RAČUNARSTVO
    160
    1
    2
    SESTRINSTVO
    150
    1.5
    3
    TAJNIŠTVO
    140
    2
    4
    TURISMO
    180
    2.5
    5
    RAČUNOVODSTVO
    160
    1
    Morate pokazati specijalnost koju studirate, trošak mirovine, zadani iznos i ukupan iznos koji treba platiti.

  13.   Charly dijo

    Pozdrav, može li mi netko pomoći?
    Trebam «Zatražiti tri riječi tipkovnicom i prikazati ih abecednim redom od A do Ž»
    Na Bash ili sh jeziku za LINUX porfaborrrr