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
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….
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
Najljepša hvala na doprinosu 🙂
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
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
To je prethodni članak. Možete mu pristupiti na http://usemoslinux.blogspot.com
Zagrliti! Pavao.
Dobro jutro prijatelju, samo hvala, tvoj je blog jako dobar, ali ne mogu dobiti prvi dio Programiranja u Bashu, gdje ga imam, hvala, pozdrav
Dva izvanredna dijela, iskrene čestitke.
Jednostavno divno.
Bien
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.
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.
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.
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