Programiranje u bash - 2. dio

Drugi dio ovoga mini tutorial programiranje u bash, gdje učimo koristiti ciklusa i druge alate koji će nam pomoći da poboljšamo naše funkcionalnosti skripte.

Ako je uslovno

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

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

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 izvršavaju naredbe

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 čuvamo množenje X sa MR = $ [X * M] # Ovo množenje ispisuje se na odjeku ekrana "$ M * $ X = $ R" # Puštanjem, povećavamo vrijednost X za 1 jedinicu, neka je X = $ X + 1 gotovo

2. Za: sprema listu 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 direktorijume izvora i odredišta ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Pozicioniramo se u izvorni cd $ ORIGIN # Od svih datoteka želimo samo onu koja je # pozovite 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 # koje se nalaze 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 izlazak 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 se generira od 1 do 10, # se čuva u RANDOM RANDOM = $ [$ RANDOM% 10 + 1] dok [1] do echo –n "Unesite broj:" pročitajte NUM # Uporedite 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ćava završavanje petlje tokom prekida #Ako je broj manji od RANDOM elif [“$ NUM –gt“ $ RANDOM “]; onda odjekni "Manje je" "Ako ne, veći je od SLUČAJNOG, inače odjekuje" TO JE veće "

3. Do: prilično slična strukturi sa Dok, osim što se kod uvijek izvršava dok je procjena 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 opadajućem redoslijedu

#! / bin / bash CONT = 20 # Dokle god je brojač manji od 10 (-lt, „niži # 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 zadnji ciklus je poseban slučaj, jer se obično koristi za brzo pravljenje jelovnika. Radi slično petlji For.

odaberite VARIABLE na LISTU 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 # opcije koje su mu dostupne, mada se mogu dodati i druge opcije # još odaberite stavku u Nastavi Završi uradi # Ako korisnik odabere završite program, a zatim sa prekidom izlazimo iz ciklusa. if [$ item = "Finish"]; zatim prekinite fi gotovo
Hvala Juan Carlos Ortiz!

Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Srednje teško rekao je

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

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

  2.   Miguel Angel rekao je

    Pozdrav, dobri tuto, 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 primiti listu izvorne datoteke, ova lista donosi samo imena (bez nastavka), tako da ciklus čini sljedeće, potražite navedeno ime primljeno u direktoriju (koji ćemo tražiti) , izdvojite i kopirajte datoteku (puno ime već s nastavkom) i apsolutnu putanju i stvorite je u drugoj odredišnoj datoteci.

    Zasad imam sljedeće:

    dok čitate redak
    do
    echo -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 rekao je

    Puno vam hvala na doprinosu 🙂

  4.   Mario Xavier rekao je

    zdravo ... nadam se da možete pomoći u sljedećoj praksi ... Raspakirajte datoteku u tgz u navedenom direktorijumu, 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
    dozvola za izvršenje direktorija

  5.   johnk rekao je

    ARCH-DESTINATION je varijabla u kojoj želimo spremiti put odredišne ​​datoteke, osim za suvišnost. Zatim ovoj promjenljivoj ukazujemo na varijablu DESTINATION, koja gore sadrži putanju do mape Dokumenti, a mi dodajemo datoteku "varijabla", 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 rekao je

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

    Zagrljaj! Paul.

  7.   Frank rekao je

    Dobro jutro prijatelju samo hvala, jako dobro tvoj blog, ali ne mogu dobiti prvi dio Programiranja na Bashu, gdje ga dobivam hvala, pozdrav

  8.   Saito Mordraw rekao je

    Dva izvanredna dijela, iskrene čestitke.

    Jednostavno divno.

  9.   Fredy rekao je

    Bien

  10.   hugo rekao je

    Pozdrav, izrađujem program sa CASE, šta želim da radi, a 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
    eho 5. Izlaz
    pročitaj var
    slučaj "$ var" u
    1)
    odjek "Odabrali ste opciju 1"
    ;;
    2)
    odjek "Odabrali ste opciju 2"
    ;;
    3)
    izbacio "... .."
    ;;
    4)
    izbacio "..."
    ;;
    5)
    izbacio "..."

    ;;
    *)
    odjek "pogrešna opcija"
    ;;
    da je C

    ok ono što ne znam kako se to radi je da kada odaberem opciju 4 koja treba napustiti, pitati želim li stvarno otići i dati mi dvije mogućnosti Y & N

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

    Možete li mi pomoći, hvala.

  11.   DAPAMA21 rekao je

    Zdravo, počeo sam skriptirati prije mjesec dana i zahvaljujući vašim objavama na skriptama. Radio bih oko 1-15. Hvala vam unaprijed. Ali sada nam je naš učitelj dao posao u kojem sam stagnirao. Pošto učitelj pita:
    prosljeđujući direktorij, kopirajte u svoj dom sve datoteke koje se nalaze u tom direktoriju po abecedi i imenujući ih file1 file2 itd ... itd ...
    Sada sam u trenutku pronalaženja ili lociranja, želio sam koristiti find, ali kada mu dajem kod greške kao što sam ga stavio kroz dev null, odbijena odobrenja tada grešim i stavljam locate ovdje sam:
    pronađite $ 1 | grep "/ $ {1} \ $"
    ali naravno s ovim svi izlaze ...
    Hvala vam puno ako ste ga pročitali.
    Ako mi možete pomoći, bila bi to velika usluga.

  12.   Luis rekao je

    Volio bih da mi pomognete oko ovoga.
    1.-Unesite cijeli broj na tastaturi i dvaput i trostruko prikažite taj broj na ekranu. 2.- Napravite program koji će odlučiti da li je 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 ekranu
    6.-Napravite program koji na ekranu ispisuje riječ Linux onoliko puta koliko je korisnik naznačio.
    7.-Unesite iznos u satima i pretvorite ih u minute i sekunde.
    8.-Izračunajte površinu trokuta
    9.-Unesite broj na tastaturi, a ako unesete 2, on bi trebao biti kvadrat, 3 kocke, 4 do četvrte i tako dalje do 6.
    10-Izračunajte penziju koju student mora platiti, mora se unijeti šifra specijalnosti i zaostali dani:
    KOD
    SPECIJALNOST
    IZNOS
    TRAJANJE PO DANU
    1
    RAČUNARSTVO
    160
    1
    2
    SESTRINSTVO
    150
    1.5
    3
    SECRETARIAT
    140
    2
    4
    TURIZAM
    180
    2.5
    5
    RAČUNOVODSTVO
    160
    1
    Morate pokazati specijalnost koju studirate, trošak penzije, zadati iznos i ukupan iznos koji treba platiti.

  13.   Charly rekao je

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