Drugi del tega mini vadnica programiranje v Bash, kjer se naučimo uporabljati cikli in druga orodja, ki nam bodo pomagala izboljšati funkcionalnost našega skripte. |
Če je pogojno
Funkcija If je, da uporabi filter in izvede operacijo ali nalogo za vsako vrsto uporabljenega filtra. Njegova struktura je naslednja:
Če [pogoj]; nato ukazi elif [stanje]; nato še ukazi; ukazi fi
Primer je prikazan poleg zanke For v ustreznem odseku.
Cikli
1. While: izvršil bo vse ukaze, ki so navedeni med do in do konca, če je pogoj resničen. Če mu želimo prenesti operatorje primerjave, mora biti izraz v oklepajih.
medtem ko CONDITION / COMMAND naredi ukaze dokončane
Primer: tabela množenja števila
#! / bin / bash X = 1 echo "Vnesite številko in pritisnite ENTER" beri M # Zanka nadzoruje, da je X manjše ali enako 10, medtem ko [$ X –le 10] do #In R shranimo množenje X z MR = $ [X * M] #To množenje se natisne na odmev zaslona "$ M * $ X = $ R" # S letom povečamo vrednost X za 1 enoto, naj X = $ X + 1 končano
2. Za: shrani seznam elementov v spremenljivko, ki bo uporabljena za izvajanje določenih operacij z vsakim ciklom.
za VARIABLE v ELEMENTS naredite ukaze dokončane
Primer: program, ki kopira datoteko iz ene mape v drugo in nadomesti staro datoteko.
# / bin / bash # Vzpostavimo izvorni in ciljni imenik ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Postavimo se v izvorni cd $ ORIGIN # Od vseh datotek želimo samo tisto, ki je # call FILE for FILE v * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f nam filtrira običajne datoteke, saj nam imeniki # nič ne koristijo. –Ne odstrani # datotek, ki so "novejše" od tistih, # ki jih najdemo v ciljni mapi, če [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; nato odmeva "Kopiranje $ FILE ..." # kopiramo datoteko s cp cp $ FILE $ ARCH-DESTINATION fi končano # Za izhod iz izvorne mape cd naredimo cd
Drug primer: skript, kjer mora uporabnik uganiti naključno število, ki ga ustvari računalnik.
# / bin / bash # Naključno število se ustvari od 1 do 10, # se shrani v RANDOM RANDOM = $ [$ RANDOM% 10 + 1], medtem ko [1] do echo –n "Vnesite številko:" preberite NUM # Primerjaj, če je številka, ki jo je izbral uporabnik, enaka RANDOM; ne pozabite uporabiti $ za ovrednotenje # vrednosti spremenljivk in ne njihovih imen, če [“$ NUM –eq“ $ RANDOM ”]; nato odmev "Prav ste razumeli!" #break omogoča končanje zanke med prekinitvijo # Če je število manjše od RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; potem odmev "Manj je" "Če ne, je večji od RANDOM, sicer odmev" JE večji "fi
3. Do: po strukturi precej podobno kot While, le da se koda vedno izvaja, medtem ko je ocena stanja negativna, to pomeni, da program nadaljuje z izvajanjem, "dokler ne pride do pogoja"
dokler CONDITION / COMMAND ne naredi ukazov
Primer: številke 10-20 natisnite v padajočem vrstnem redu
#! / bin / bash CONT = 20 # Dokler je števec manjši od 10 (-lt, “nižje # od”), se koda izvaja do [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT se odšteje z enoto, naj bo CONT- = 1 končano
4. Izberite: ta zadnji cikel je poseben primer, saj se običajno uporablja za hitro pripravo menijev. Deluje podobno kot zanka For.
na seznamu izvedenih ukazov izberite VARIABLE
Primer: uporabniku omogočite nadaljevanje ali konec skripta.
#! / bin / bash #item je spremenljivka, ki se odziva na izbiro # uporabnika, Nadaljuj in Dokončaj sta # možnosti, ki so mu na voljo, čeprav je mogoče dodati še druge možnosti # več izberite element v Nadaljuj Dokončaj naredi # Če uporabnik izbere konec programa, nato s prekinitvijo zapustimo cikel. če [$ item = "Finish"]; nato prekinite fi končano
Mislim, da je nekaj takega: tar -cf - Directory | (cd / drugo / imenik; tar -xvf -)
Potem bi bilo videti kot / another / directory / Directory
Na ta način sem stisnil direktorij, ti pa ga stisneš drugam ...
Pozdravljeni, dobri tuto, učim se na tem področju in vse je v redu, le da nisem mogel narediti programa, ki bi mi pomagal, da bi ugotovil, ali mi lahko prosim pomagate.
Moram narediti cikel, v katerem bo kot parametre prejel seznam izvorne datoteke, ta seznam prinese samo imena (brez končnice), tako da cikel naredi naslednje, poiščite omenjeno ime, prejeto v imeniku ( tisto, ki jo bomo iskali), izvlecite in kopirajte datoteko (s polnim imenom že s pripono) in absolutno pot ter jo ustvarite v drugi ciljni datoteki.
Zaenkrat imam naslednje:
med branjem vrstice
do
echo -e "$ line"
find / home / myuser / dof "$ line" -exec readlink -f {};
storjeno <testlist.txt Do zdaj sem prebral datoteko, vsako vrstico, ki jo ima, vendar je ne morem iskati in izvleči informacij, če mi lahko pomagate, hvala. Na zdravje
Najlepša hvala za prispevek 🙂
živjo ... upam, da boste lahko pomagali pri naslednji vaji ... Razpakirajte datoteko v tgz v določenem imeniku, poleg tega pa določite uporabnika in skupino za vse obstoječe imenike in datoteke ter dodelite dovoljenja datotekam in imenikom
opomba: datoteke, pripravljene za branje in pisanje
dovoljenje za izvajanje imenikov
ARCH-DESTINATION je spremenljivka, pri kateri želimo shraniti pot ciljne datoteke, odpusti odvečnost. Nato tej spremenljivki označimo spremenljivko DESTINATION, ki zgoraj vsebuje pot do mape Documents in dodamo "spremenljivko" FILE, ki vsebuje ime datoteke. Če bi bila ta datoteka na primer list.doc, bi bila spremenljivka ARCH-DESTINATION enaka /home/Usuario/Documentos/listado.doc
To je prejšnji članek. Do njega lahko dostopate na http://usemoslinux.blogspot.com
Objem! Paul.
Dobro jutro kolega, hvala lepa, zelo dober vaš blog, vendar ne morem dobiti prvega dela Programiranja v Bashu, kjer ga dobim hvala, lep pozdrav
Dva izredna dela, iskrene čestitke.
Preprosto čudovito.
Bien
Pozdravljeni, delam program s CASE, kaj hočem in ne vem, na primer:
echo Izbere možnost:
echo
odmev 1. možnost 1
odmev 2. možnost 2
odmev 3. možnost 3
odmev 4. možnost 4
odmev 5. Izhod
beri var
primer "$ var" v
1)
echo "Izbrali ste možnost 1"
;;
2)
echo "Izbrali ste možnost 2"
;;
3)
vrgel ven "... .."
;;
4)
vrgel "..."
;;
5)
vrgel "..."
;;
*)
echo "napačna možnost"
;;
da je C
ok, kar ne vem, kako to storiti, je, da ko izberem možnost 4, ki naj zapusti, vprašam, ali resnično želim oditi, in mi damo 2 možnosti
drugi pa je ta, da če izberete kaj drugega kot številke 1..5, iz skripta ne glasujte zame ...
Bi mi lahko pomagali, hvala.
Pozdravljeni, skriptiranje sem začel pred 1 mesecem in zahvaljujoč vašim objavam v skriptu. Naredil bom približno 15-20. Najlepša hvala v naprej. Zdaj pa nam je naš učitelj dal službo, pri kateri sem stagniral. Ker učitelj vpraša:
ko prenesete imenik, kopirajte na svoj dom vse datoteke, ki so v tem imeniku, po abecedi in jih poimenujte file1 file2 itd ... itd ...
Zdaj sem v trenutku find or locate, želel sem uporabiti find, toda ko sem mu dal kodo napake, ko sem jo dal skozi dev null, so dovoljenja zavrnjena, potem se zmotim in postavim lokacijo, ki sem tukaj:
poiščite 1 $ | grep "/ $ {1} \ $"
ampak seveda s tem vsi izidejo ...
Najlepša hvala, če ste jo prebrali.
Če mi lahko pomagate, bi bila to velika usluga.
Rad bi, da mi pomagaš pri tem.
1.-Na tipkovnici vnesite celo številko in jo dvakrat in trikrat prikažite na zaslonu. 2. - Naredite program, s katerim se boste odločili, ali je številka, vnesena s tipkovnico, deljiva s 3 ali ne.
3. - Naredite program za iskanje vsote: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
4. - Naredite program za iskanje vsote 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
5.-Naredite program, ki na zaslon 10-krat natisne besedo Linux
6.-Naredite program, ki na zaslon natisne besedo Linux tolikokrat, kolikor jo uporabnik navede.
7.-Vnesite znesek v urah in jih pretvorite v minute in sekunde.
8.-Izračunaj površino trikotnika
9.-Številko vnesite s tipkovnico, nato pa, če vnesete 2, naj bo kvadrat, 3 kocke, 4 do četrte in tako do 6.
10-Izračunajte pokojnino, ki jo mora študent plačati, vnesti morate kodo posebnosti in zaostale dni:
KODA
POSEBNOST
ZNESEK
MED DANOM
1
RAČUNALNIŠTVO
160
1
2
ZDRAVSTVENA NEGA
150
1.5
3
TAJNIŠTVO
140
2
4
TURIZEM
180
2.5
5
RAČUNOVODSTVO
160
1
Navesti morate specialnost, ki jo študirate, stroške pokojnine, zamudne stroške in skupni znesek, ki ga je treba plačati.
Pozdravljeni, mi lahko kdo pomaga?
Potrebujem «Zahtevaj tri besede s tipkovnico in jih prikaži po abecedi od A do Ž»
V jeziku Bash ali sh za LINUX porfaborrrr