Teine osa sellest miniõpetus programmeerimine aastal sisse lööma, kus õpime kasutama CICLOS ja muud tööriistad, mis aitavad meil oma funktsionaalsust parandada skripte. |
Kui tingimuslik
Ifi funktsiooniks on filtri rakendamine ja toimingu või ülesande täitmine iga rakendatud filtri tüübi jaoks. Selle struktuur on järgmine:
Kui [tingimus]; siis käsib elif käsud [tingimus]; siis muud käsud; fi käsud
Näide on kuvatud tsükli For kõrval selle vastavas jaotises.
Tsüklid
1. Kuigi: see täidab kõik käsu do ja tehtud vahel määratud käsklused seni, kuni tingimus on tõene. Kui tahame sellele edastada võrdlusoperaatoreid, peab avaldis olema sulgudes.
samal ajal kui CONDITION / COMMAND teevad käske
Näide: arvu korrutustabel
#! / bin / bash X = 1 kaja "Sisestage number ja vajutage sisestusklahvi", loe M #Silmus juhib, et X on väiksem või võrdne 10-ga, samal ajal kui [$ X –le 10] teeb #R-is salvestame X korrutamise MR = $ [X * M] # See korrutamine trükitakse ekraanile kaja "$ M * $ X = $ R" # Laskmise korral suurendame X väärtust 1 ühiku võrra, laseme X = $ X + 1 teha
2. For: salvestab muutuja elementide loendi, mida kasutatakse iga tsükli jaoks teatud toimingute tegemiseks.
elemendi VARIABLE jaoks tehke käsud
Näide: programm, mis kopeerib faili ühest kaustast teise, asendades vana faili.
# / bin / bash # Loome lähte- ja sihtkataloogid ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Paigutame end allika CD-le $ ORIGIN #Kõikidest failidest soovime ainult seda, mis on # kutsu FILE for FILE sisse * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f filtreerib meid tavalisi faile, kuna kataloogid pole meile # midagi head. –Nt filtreerib # faili „uuematest” kui sihtkaustast leitud # failid, kui [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; siis kaja "$ FILE kopeerimine ..." # kopeerime faili cp-ga cp $ FILE $ ARCH-DESTINATION fi valmis #We cd lähtekataloogist väljumiseks cd
Teine näide: skript, kus kasutaja peab arvama juhusliku arvu, mille arvuti on genereerinud.
# / bin / bash # Juhuslik arv genereeritakse vahemikus 1 kuni 10, see on # salvestatud juhuslikult RANDOM RANDOM = $ [$ RANDOM% 10 + 1], samal ajal kui [1] teeb kaja - n "Sisestage number:" loe NUM # Võrdle, kui kasutaja valitud number on # võrdne RANDOMiga; ärge unustage kasutama dollarit muutujate # väärtuste, mitte nende nimede hindamiseks, kui [“$ NUM –eq“ $ RANDOM ”]; siis kaja "Saite õigesti aru!" #break lubab tsükli lõpetada, samal ajal kui break # kui arv on väiksem kui RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; siis kaja "See on vähem" "Kui ei, siis on see suurem kui RANDOM muu kaja" See on suurem "on tehtud
3. Kuni: ülesehituselt üsna sarnane Whileiga, välja arvatud see, et kood käivitub alati, kui tingimuse hindamine on negatiivne, see tähendab, et programm jätkab "kuni tingimuse tekkimiseni"
kuni CONDITION / COMMAND käsk on tehtud
Näide: printige numbrid 10-20 kahanevas järjekorras
#! / bin / bash CONT = 20 # Niikaua kui loendur on väiksem kui 10 (-lt, "madalam # kui"), käivitatakse kood kuni [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT lahutatakse ühikust, mille järgi CONT- = 1 on tehtud
4. Vali: see viimane tsükkel on erijuhtum, kuna seda kasutatakse tavaliselt menüüde kiireks koostamiseks. See töötab sarnaselt For-silmusele.
vali VARIABLE tehtud käskude loendis
Näide: võimaldage kasutajal skripti jätkata või lõpetada.
#! / bin / bash #item on muutuja, mis vastab # kasutaja valitud valikutele. Jätka ja Lõpeta on talle saadaolevad #optsioonid, kuigi muid valikuid saab lisada # veel valige üksus jaotises Jätka lõpetamist tee #Kui kasutaja valib lõpetage programm, siis katkestusega väljume tsüklist. kui [$ item = "Lõpeta"]; siis vaheaeg tehtud
Ma arvan, et midagi sellist on: tar -cf - kataloog | (cd / muu / kataloog; tar -xvf -)
Siis näeks see välja nagu / teine / kataloog / kataloog
Nii tihendasin kataloogi ja dekompresseerite selle teises kohas ...
Tere, hea tuto, ma õpin seda teemat ja kõik on korras, ainult et ma pole suutnud koostada programmi, mis mind aitaks, et näha, kas saate mind aidata.
Ma pean tegema tsükli, milles see saab parameetritena lähtefaili loendi, see loend toob ainult nimed (ilma laienditeta), nii et tsükkel teeb järgmist, otsige nimetatud kataloogis saadud nime (mida me otsime) , ekstraktige ja kopeerige fail (täisnimi juba koos laiendiga) ja absoluutne tee ning looge see teises sihtfailis.
Siiani on mul järgmine:
rida lugedes
do
kaja -e "$ line"
find / home / myuser / dof "$ line" -exec readlink -f {};
done <testlist.txt Siiani lugesin faili, kõiki selle ridu, kuid ma ei saa seda panna seda faili otsima ja teavet välja võtma, kui aitate mind, siis palun, aitäh. Terviseks
Suur aitäh panuse eest 🙂
Tere ... Loodan, et saate aidata järgmises praktikas ... Pakkige fail kataloogis tgz määratud kataloogis lahti, lisaks määrake kõigi olemasolevate kataloogide ja failide kasutaja ja rühm ning määrake failidele ja kataloogidele õigused
märkus: failid on lugemiseks ja kirjutamiseks valmis
kataloogide täitmise luba
ARCH-DESTINATION on muutuja, kuhu soovime salvestada sihtfaili tee, salvestades koondamise. Seejärel märgime sellele muutujale muutuja DESTINATION, mis ülal sisaldab kausta Dokumendid teed ja lisame "muutuja" FILE, mis sisaldab faili nime. Kui see fail oleks näiteks list.doc, oleks muutuja ARCH-DESTINATION võrdne /home/Usuario/Documentos/listado.doc
See on eelmine artikkel. Sellele pääseb juurde aadressil http://usemoslinux.blogspot.com
Kallistama! Paul.
Tere hommikust semu, lihtsalt tänan teid, teie ajaveeb on väga hea, kuid ma ei saa Bashi programmeerimise esimest osa, kust saan tänu, tervitused
Kaks erakordset osa, minu siirad õnnitlused.
Lihtsalt imeline.
Bien
Tere, ma koostan programmi CASE, mida ma tahan, et see teeks ja ma ei tea, kuidas näiteks:
kaja Valib võimaluse:
miss
kaja 1. variant 1
kaja 2. variant 2
kaja 3. variant 3
kaja 4. variant 4
kaja 5. Välju
loe var
juhtum "$ var" in
1)
kaja "Valisite valiku 1"
;;
2)
kaja "Valisite valiku 2"
;;
3)
viskas välja "….."
;;
4)
viskas välja "…."
;;
5)
viskas välja "…"
;;
*)
kaja "vale variant"
;;
et C
ok, mida ma ei tea, kuidas seda teha, on see, et kui valin võimaluse 4, mis on väljumine, küsige, kas ma tõesti tahan väljuda, ja andke mulle kaks võimalust Y & N
ja teine on see, et kui valite muu kui numbrid 1..5, siis ärge hääletage skripti poolt minu poolt ...
Kas aitaksite mind tänada.
Tere, alustasin skriptimist 1 kuu tagasi ja tänu teie skriptipostitustele. Ma olen teinud umbes 15-20. Tänan teid väga ette. Kuid nüüd on meie õpetaja andnud meile töö, milles olen soiku jäänud. Kuna õpetaja küsib:
kataloogi edastades kopeerige koju kõik selles kataloogis olevad failid tähestiku järgi ja nimetage neile fail1 fail2 fail jne jne ... jne
Nüüd olen leidmise või leidmise hetkel, tahtsin kasutada leidmist, kuid kui andsin talle veakoodi, kui panin selle dev null kaudu, siis keelatud õigused, siis eksin ja panen asukoha, kus ma olen:
leidke $ 1 | grep "/ $ {1} \ $"
aga loomulikult tuleb see kõik välja ...
Suur aitäh, kui loete seda.
Kui saaksite mind aidata, oleks see suur eelis.
Tahaksin, et aitaksite mind selles küsimuses.
1.-Sisestage klaviatuuril täisarv ja kuvage kaks korda ning kolmekordistage see arv ekraanil. 2.- Koostage programm, et otsustada, kas klaviatuuriga sisestatud number jagub 3-ga või mitte.
3.- Koostage programm, et leida summa: ???????? + ????????? ????????? ????????? ???????
4.- Koostage programm summa 1 + 3 + 5 + 7 + 9 · · · + (2n + 1) leidmiseks.
5.-Tehke programm, mis prindib ekraanile sõna Linux 10 korda
6.-Tehke programm, mis prindib ekraanile sõna Linux kasutaja määratud arvu kordi.
7.-Sisestage summa tundides ja teisendage need minutiteks ja sekunditeks.
8.-Arvutage kolmnurga pindala
9.-Sisestage klaviatuuril number, siis kui sisestate 2, peaks see olema ruut, 3 kuubikut, 4 kuni neljas ja nii edasi kuni 6.
10 - Arvutage pension, mida õpilane peab maksma, tuleb sisestada eriala kood ja võlgnetud päevad:
KOOD
SPETSIAALSUS
SUMMA
PÄEVAS
1
ARVUTAMINE
160
1
2
HOOLDUS
150
1.5
3
SEKRETARIAAT
140
2
4
TURISM
180
2.5
5
RAAMATUPIDAMINE
160
1
Peate näitama õpitavat eriala, pensioni maksumust, makseviivitust ja kogu makstavat summat.
Tere, kas keegi saaks mind aidata?
Mul on vaja «taotleda kolme sõna klaviatuuri abil ja kuvada need tähestikulises järjekorras vahemikus A kuni z»
Bashi või sh keeles LINUX porfaborrrr