Programmēšana bash - 2. daļa

Otrā daļa no tā mini apmācība programmēšana Stipri iesist, kur mēs iemācāmies izmantot ciclos un citi rīki, kas palīdzēs mums uzlabot mūsu funkcionalitāti skripti.

Ja nosacīts

Ja funkcija ir lietot filtru un veikt darbību vai uzdevumu katram izmantotajam filtram. Tās struktūra ir šāda:

Ja [nosacījums]; tad elif komandas [nosacījums]; tad vēl komandas; fi komandas

Piemērs ir parādīts blakus cilpu For attiecīgajā sadaļā.

Cikli

1. Kamēr: tas izpildīs visas komandas, kas norādītas starp do un done, kamēr nosacījums ir patiess. Ja mēs vēlamies tam nodot salīdzināšanas operatorus, izteicienam jābūt iekavās.

kamēr CONDITION / COMMAND izpilda komandas

Piemērs: skaitļa reizināšanas tabula

#! / bin / bash X = 1 atbalss "Ievadiet skaitli un nospiediet taustiņu ENTER" lasiet M #Cilpa kontrolē, ka X ir mazāks vai vienāds ar 10, bet [$ X –le 10] do # IN mēs glabājam reizinājumu X ar MR = $ [X * M] # Šis reizinājums tiek uzdrukāts uz ekrāna atbalss "$ M * $ X = $ R" #Atļaujot, mēs palielinām X vērtību par 1 vienību, ļaujiet X = $ X + 1 izdarīt

2. For: saglabā mainīgo elementu sarakstu, kas tiks izmantots, lai veiktu noteiktas darbības ar katru ciklu.

VARIABLE elementā ELEMENTS veic komandas

Piemērs: programma, kas kopē failu no vienas mapes uz citu, aizstājot veco failu.

# / bin / bash # Mēs izveidojam avota un mērķa direktorijus ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Mēs pozicionējam sevi avota CD $ ORIGIN # No visiem failiem mēs vēlamies tikai to, kas ir # call FILE for FILE * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f filtrē mūs parastos failus, jo direktoriji mums # nav nekas labs. –Nt filtrē # failus “jaunākus” nekā tie, kas atrodas # mērķa mapē, ja [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; tad atbalss "$ FILE kopēšana ..." # mēs kopējam failu ar cp cp $ FILE $ ARCH-DESTINATION fi done #We cd, lai izietu no avota mapes cd

Vēl viens piemērs: skripts, kurā lietotājam jāuzmin datora ģenerēts nejaušs skaitlis.

# / bin / bash # Nejaušs skaitlis tiek ģenerēts no 1 līdz 10, tas # tiek saglabāts RANDOM RANDOM = $ [$ RANDOM% 10 + 1], savukārt [1] veic atbalss –n “Ievadiet numuru:“ lasiet NUM # Salīdziniet, ja lietotāja izvēlētais skaitlis ir # vienāds ar RANDOM; atcerieties izmantot $, lai novērtētu mainīgo # vērtības, nevis to nosaukumus, ja [“$ NUM –eq“ $ RANDOM ”]; tad atbalss "Tev viss ir pareizi!" # break ļauj pārtraukt cilpu, kamēr pārtraukums # Ja skaitlis ir mazāks par RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; tad atbalss "Tas ir mazāk" "Ja nē, tas ir lielāks nekā RANDOM, pārējais atbalss" IR lielāks "ir izdarīts

3. Līdz: pēc struktūras ir diezgan līdzīgs kamēr, izņemot to, ka kods vienmēr tiek izpildīts, kamēr nosacījuma novērtējums ir negatīvs, tas ir, programma turpina izpildīt "līdz nosacījuma iestāšanās brīdim"

līdz CONDITION / COMMAND veic komandas

Piemērs: izdrukājiet skaitļus 10-20 dilstošā secībā

#! / bin / bash CONT = 20 # Kamēr skaitītājs ir mazāks par 10 (-lt, "zemāks # nekā"), kods tiek izpildīts līdz [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT tiek atņemta ar vienību, kas ļauj CONT- = 1 izdarīt

4. Atlasīt: šis pēdējais cikls ir īpašs gadījums, jo to parasti izmanto, lai ātri izveidotu izvēlnes. Tas darbojas līdzīgi kā cilpa For.

izvēlēto VARIABLE izpildīto komandu sarakstā

Piemērs: dodiet lietotājam iespēju turpināt vai beigt skriptu.

#! / bin / bash #item ir mainīgais, kas reaģē uz to, ko izvēlas # lietotājs, Turpināt un Pabeigt ir # pieejamās opcijas, lai gan citas opcijas var pievienot # vēl atlasiet vienumu sadaļā Turpināt Pabeigt dariet # Ja lietotājs izvēlas beigt programmu, tad ar pārtraukumu mēs izejam no cikla. ja [$ item = "Pabeigt"]; tad pārtraukums fi darīts
Paldies Huanam Karlosam Ortizam!

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   Vidēji Grūti teica

    Es domāju, ka kaut kas līdzīgs šim: tar -cf - Katalogs | (cd / cits / direktorijs; tar -xvf -)

    Tad tas izskatās kā / cits / direktorijs / Katalogs
    Tādā veidā es saspiestu direktoriju, un jūs to atspiedāt citā vietā.

  2.   Migels Eņģelis teica

    Labdien, labs pasniedzējs, es mācos šo tēmu, un viss ir kārtībā, tikai man nav izdevies izveidot programmu, kas man palīdzētu, lai redzētu, vai jūs varat man palīdzēt, lūdzu.

    Man jādara cikls, kurā tas kā parametrus saņems avota faila sarakstu, šajā sarakstā tiek parādīti tikai nosaukumi (bez paplašinājuma), lai cikls rīkotos šādi, meklējiet minēto nosaukumu, kas saņemts direktorijā (kas ir kuru meklēsim), izvelciet un nokopējiet failu (pilns nosaukums jau ar paplašinājumu) un absolūto ceļu un izveidojiet to citā mērķa failā.

    Pagaidām man ir šādi:

    kamēr lasu rindu
    do
    atbalss -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    done <testlist.txt Līdz šim es izlasīju failu, visas tā rindas, bet es nevaru likt tai meklēt šo failu un iegūt informāciju, ja jūs varat man palīdzēt, lūdzu, paldies. Priekā

  3.   Pamela galaviza teica

    Liels paldies par ieguldījumu 🙂

  4.   Mario Havjers teica

    Sveiki ... Es ceru, ka jūs varat palīdzēt nākamajā praksē ... Atbrīvojiet failu tgz norādītajā direktorijā, papildus norādot lietotāju un grupu visiem esošajiem direktorijiem un failiem un piešķirot atļaujas failiem un direktorijiem
    piezīme: faili ir gatavi lasīšanai un rakstīšanai
    direktoriju izpildes atļauja

  5.   Huanks teica

    ARCH-DESTINATION ir mainīgais, kurā mēs vēlamies saglabāt mērķa faila ceļu, izņemot atlaišanu. Tad šim mainīgajam mēs norādām mainīgo DESTINATION, kas iepriekš satur ceļu uz mapi Dokumenti, un mēs pievienojam "mainīgo" FILE, kurā ir faila nosaukums. Ja šis fails būtu, piemēram, list.doc, mainīgais ARCH-DESTINATION būtu vienāds ar /home/Usuario/Documentos/listado.doc

  6.   Izmantosim Linux teica

    Tas ir iepriekšējais raksts. Tam varat piekļūt vietnē http://usemoslinux.blogspot.com

    Apskāviens! Pāvils.

  7.   atklāts teica

    Labrīt, paldies, tikai paldies, ļoti labs tavs emuārs, bet es nevaru iegūt programmu Programma pirmo daļu Bashā, kur es to saņemu, paldies, sveicieni

  8.   Saito Mordraugs teica

    Divas ārkārtas daļas, sirsnīgi apsveicu.

    Vienkārši brīnišķīgi.

  9.   Fredy teica

    Labi

  10.   Hugo teica

    Sveiki, es veidoju programmu ar CASE, ko es vēlos, lai tas darītu, un es nezinu, kā, piemēram:

    atbalss Izvēlas opciju:
    palaist garām
    atbalss 1. 1. variants
    atbalss 2. 2. variants
    atbalss 3. 3. variants
    atbalss 4. 4. variants
    atbalss 5. Iziet
    lasīt var
    gadījums "$ var"
    1)
    atbalss "Jūs izvēlējāties 1. opciju"
    ;;
    2)
    atbalss "Jūs izvēlējāties 2. opciju"
    ;;
    3)
    izmest ārā "….."
    ;;
    4)
    izmest ārā "…."
    ;;
    5)
    izmest ārā "…"

    ;;
    *)
    atbalss "nepareizs variants"
    ;;
    Esac

    labi, ko es nezinu, kā to izdarīt, ir tas, ka, izvēloties 4. variantu, kas ir atstāt, pajautājiet, vai es patiešām vēlos aiziet, un dodiet man divas iespējas Y & N

    un otrs ir tas, ka, izvēloties kaut ko citu, nevis skaitļus 1..5, nebalso par mani no skripta ...

    Vai jūs varētu man palīdzēt, paldies.

  11.   DAPAMA21 teica

    Sveiki, es sāku skriptu sagatavošanu pirms 1 mēneša un pateicoties jūsu skriptu ierakstiem. Būšu darījis apmēram 15-20. Liels paldies jau iepriekš. Bet tagad mūsu skolotājs mums ir devis darbu, kurā es esmu stagnējis. Tā kā skolotājs jautā:
    nododot direktoriju, kopējiet mājās visus failus, kas atrodas šajā direktorijā alfabētiskā secībā, un nosauciet tos file1 file2 utt ... utt ...
    Tagad esmu atrodams vai atrodams, es gribēju izmantot meklēšanu, bet, piešķirot tam kļūdas kodu, piemēram, es to ievietoju caur dev null, atļaujas ir liegtas, tad es kļūdos un ievietoju atrašanās vietu, kur esmu:
    atrodiet $ 1 | grep "/ $ {1} \ $"
    bet, protams, ar to viņi visi iznāk ...
    Liels paldies, ja to izlasījāt.
    Ja jūs varētu man palīdzēt, tas būtu liels labvēlība.

  12.   Luis teica

    Es gribētu, lai jūs man palīdzētu šajā jautājumā.
    1.-Ievadiet veselu skaitli uz tastatūras un divreiz parādiet un trīskāršojiet šo skaitli ekrānā. 2.- Izveidojiet programmu, lai izlemtu, vai tastatūras ievadītais skaitlis dalās ar 3 vai nē.
    3.- Izveidojiet programmu, lai atrastu summu: ???????? + ????????????????? ???????
    4.- Izveidojiet programmu, lai atrastu summu 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Izveidojiet programmu, kas uz ekrāna 10 reizes izdrukā vārdu Linux
    6.-Izveidojiet programmu, kas uz ekrāna izdrukā vārdu Linux tik reižu, cik norāda lietotājs.
    7.-Ievadiet summu stundās un konvertējiet tās minūtēs un sekundēs.
    8.-Aprēķiniet trijstūra laukumu
    9.-Ievadiet numuru uz tastatūras, tad, ja ievadāt 2, tam jābūt kvadrātā, 3 kubiņos, 4 līdz ceturtajam un tā tālāk līdz 6.
    10 - Aprēķiniet studentam maksājamo pensiju, jāievada specialitātes kods un nokavētās dienas:
    KODS
    ĪPAŠUMS
    SUMMA
    DIENAS LAIKĀ
    1
    Skaitļošana
    160
    1
    2
    KOPŠANA
    150
    1.5
    3
    Sekretariāts
    140
    2
    4
    TŪRISMS
    180
    2.5
    5
    GRĀMATVEDĪBA
    160
    1
    Jums jāparāda specialitāte, kuru mācāties, pensijas izmaksas, noklusējums un kopējā maksājamā summa.

  13.   Charly teica

    Sveiki, vai kāds var man palīdzēt?
    Man ir nepieciešams «Pieprasīt trīs vārdus ar tastatūru un parādīt tos alfabētiskā secībā no A līdz z»
    Bash vai sh valodā LINUX porfaborrrr