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