Programiranje v bash - 2. del

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
Hvala Juan Carlos Ortiz!

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Srednje težko je dejal

    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 ...

  2.   Miguel Angel je dejal

    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

  3.   Pamela galaviz je dejal

    Najlepša hvala za prispevek 🙂

  4.   Mario Xavier je dejal

    ž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

  5.   johnk je dejal

    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

  6.   Uporabimo Linux je dejal

    To je prejšnji članek. Do njega lahko dostopate na http://usemoslinux.blogspot.com

    Objem! Paul.

  7.   Frank je dejal

    Dobro jutro kolega, hvala lepa, zelo dober vaš blog, vendar ne morem dobiti prvega dela Programiranja v Bashu, kjer ga dobim hvala, lep pozdrav

  8.   Saito Mordraw je dejal

    Dva izredna dela, iskrene čestitke.

    Preprosto čudovito.

  9.   Fredy je dejal

    Bien

  10.   Hugo je dejal

    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.

  11.   DAPAMA21 je dejal

    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.

  12.   luis je dejal

    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.

  13.   Charly je dejal

    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