Programmering i bash - del 2

Del to Dette mini-opplæring programmering i Bash, der vi lærer å bruke sykluser og andre verktøy som vil hjelpe oss med å forbedre funksjonene til våre skript.

Hvis betinget

Funksjonen til If er å bruke et filter og utføre en operasjon eller oppgave for hver type filter som brukes. Dens struktur er som følger:

Hvis [tilstand]; deretter elif kommandoer [tilstand]; da kommandoer ellers; fi-kommandoer

Et eksempel vises ved siden av For-sløyfen i den respektive delen.

Ciclos

1. Mens: det vil utføre alle kommandoene som er spesifisert mellom gjør og utført så lenge tilstanden er oppfylt. Hvis vi vil overføre sammenligningsoperatører til det, må uttrykket være i parentes.

mens CONDITION / COMMAND gjør kommandoer utført

Eksempel: multiplikasjonstabell for et tall

#! / bin / bash X = 1 ekko "Skriv inn et tall og trykk ENTER" les M # Sløyfen styrer at X er mindre enn eller lik 10 mens [$ X –le 10] gjør # I R lagrer vi multiplikasjonen av X av MR = $ [X * M] # Denne multiplikasjonen er trykt på skjermens ekko "$ M * $ X = $ R" # Med la, øker vi verdien av X med 1 enhet, la X = $ X + 1 ferdig

2. For: lagrer en liste over elementer i en variabel, som vil bli brukt til å utføre visse operasjoner med hver syklus.

for VARIABLE i ELEMENTS gjør kommandoer utført

Eksempel: program som kopierer en fil fra en mappe til en annen, og erstatter en gammel fil.

# / bin / bash # Vi oppretter kilde- og destinasjonskataloger ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Vi posisjonerer oss i kilde-cd $ ORIGIN # Av alle filene vil vi bare ha den som er # call FILE for FILE i * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f filtrerer oss vanlige filer, siden kataloger er # ingenting bra for oss. –Nt filtrerer ut # filer “nyere” enn de # som er funnet i målmappen hvis [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; deretter ekko "Kopiering $ FIL ..." # vi kopierer filen med cp cp $ FILE $ ARCH-DESTINATION fi done #We cd for å avslutte kildemappen cd

Et annet eksempel: skript der brukeren må gjette et tilfeldig tall generert av datamaskinen.

# / bin / bash #Et tilfeldig nummer genereres fra 1 til 10, det er # lagret i RANDOM RANDOM = $ [$ RANDOM% 10 + 1] mens [1] gjør ekko –n "Skriv inn et tall:" les NUM # Sammenlign hvis nummeret valgt av brukeren er # tilsvarer RANDOM; husk å bruke $ for å evaluere #verdiene til variablene og ikke navnene deres hvis [“$ NUM –eq“ $ RANDOM ”]; så ekko "Du fikk det riktig!" #break tillater avslutning av loop mens pause #Hvis tallet er mindre enn RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; deretter ekko "Det er mindre" "Hvis ikke, er det større enn RANDOM annet ekko" ER større "gjort

3. Inntil: ganske lik struktur mens While, bortsett fra at koden alltid kjøres mens evalueringen av tilstanden er negativ, det vil si at programmet fortsetter å kjøre "til tilstanden oppstår"

til CONDITION / COMMAND gjør kommandoer utført

Eksempel: skriv ut tallene 10-20 i synkende rekkefølge

#! / bin / bash CONT = 20 # Så lenge telleren er mindre enn 10 (-lt, "lavere # enn") kjøres koden til [$ CONT -lt 10]; gjør ekko "COUNTER $ CONT" # A CONT er trukket en enhet la CONT- = 1 ferdig

4. Velg: denne siste syklusen er et spesielt tilfelle, siden det vanligvis brukes til å lage menyer raskt. Det fungerer i likhet med For-sløyfen.

velg VARIABLE i LISTE over utførte kommandoer

Eksempel: gi brukeren muligheten til å fortsette eller avslutte skriptet.

#! / bin / bash #item er en variabel som reagerer på det #brukeren velger, Fortsett og fullfør er de # alternativene som er tilgjengelige for ham, selv om andre alternativer kan legges til # mer velg element i Fortsett ferdig gjør # Hvis brukeren velger avslutte programmet, så avslutter vi syklusen med pause. hvis [$ item = "Finish"]; deretter bryte fi ferdig
Takk Juan Carlos Ortiz!

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Middels vanskelig sa

    Jeg tror noe slikt: tar -cf - Directory | (cd / annet / katalog; tar -xvf -)

    Da vil det se ut som / annet / katalog / katalog
    På den måten komprimerte jeg en katalog, og du dekomprimerer den et annet sted….

  2.   Miguel Angel sa

    Hei, god veileder, jeg lærer om emnet og alt er bra, bare jeg har ikke klart å lage et program som hjelper meg, se om du kan hjelpe meg.

    Jeg trenger å gjøre en syklus der den vil motta som parametere en liste over en kildefil, denne listen gir bare navn (uten utvidelse), slik at syklusen gjør følgende, se etter navnet som er mottatt i en katalog (som er den vi vil se etter), pakke ut og kopiere filen (fullt navn allerede med utvidelse) og den absolutte banen og opprette den i en annen destinasjonsfil.

    Så langt har jeg følgende:

    mens du leser linje
    do
    ekko -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    gjort <testlist.txt Så langt har jeg lest filen, hver linje den har, men jeg kan ikke få den til å se etter den filen og trekke ut informasjonen, hvis du kan hjelpe meg takk. Jubel

  3.   Pamela galaviz sa

    Tusen takk for bidraget 🙂

  4.   Mario Xavier sa

    hei ... Jeg håper du kan hjelpe i neste praksis ... Pakk ut filen i tgz i den angitte katalogen, i tillegg til å spesifisere bruker og gruppe for alle eksisterende kataloger og filer, og tildele tillatelser til filer og kataloger
    Merk: filer klare for lesing og skriving
    tillatelse til utførelse av kataloger

  5.   johnk sa

    ARCH-DESTINATION er en variabel der vi vil lagre banen til destinasjonsfilen, tilgi redundansen. Deretter, til denne variabelen, indikerer vi variabelen DESTINATION, som ovenfor inneholder banen til Dokumenter-mappen, og vi legger til "variabelen" FIL, som inneholder navnet på filen. Hvis den filen for eksempel var list.doc, ville variabelen ARCH-DESTINATION være lik /home/Usuario/Documentos/listado.doc

  6.   La oss bruke Linux sa

    Det er forrige artikkel. Du får tilgang til den på http://usemoslinux.blogspot.com

    Klem! Paul.

  7.   Frank sa

    God morgen kompis bare takk, veldig bra bloggen din, men jeg kan ikke få den første delen av programmering i Bash, hvor jeg får takk, hilsener

  8.   Saito Mordraw sa

    To ekstraordinære deler, mine oppriktige gratulasjoner.

    Rett og slett fantastisk.

  9.   Fredy sa

    Bien

  10.   Hugo sa

    Hei, jeg lager et program med et CASE, hva jeg vil at det skal gjøre, og jeg vet ikke hvordan, for eksempel:

    ekko Velger et alternativ:
    savner
    ekko 1. alternativ 1
    ekko 2. alternativ 2
    ekko 3. alternativ 3
    ekko 4. alternativ 4
    ekko 5. Avslutt
    les var
    tilfelle "$ var" i
    1)
    ekko "Du valgte alternativ 1"
    ;;
    2)
    ekko "Du valgte alternativ 2"
    ;;
    3)
    kastet ut "….."
    ;;
    4)
    kastet ut "…."
    ;;
    5)
    kastet ut "…"

    ;;
    *)
    ekko "feil alternativ"
    ;;
    at C

    ok det jeg ikke vet hvordan jeg gjør det er at når jeg velger alternativ 4 som skal avslutte, spør om jeg virkelig vil avslutte, og gi meg 2 alternativer Y & N

    og den andre er at når du velger noe annet enn tallene 1..5 ikke stem på meg fra skriptet ...

    Kan du hjelpe meg takk.

  11.   DAPAMA21 sa

    Hei, jeg begynte med skripting for 1 måned siden, og takk til skriptinnleggene dine. Jeg vil ha gjort ca 15-20. Tusen takk på forhånd. Men nå har læreren vår gitt oss en jobb som jeg har blitt stillestående for. Siden læreren spør:
    ved å sende en katalog, kopiere alle filene som er i katalogen hjemme i hjemmet ditt, og gi dem navnet file1 file2 etc ... etc ...
    Nå er jeg i øyeblikket for å finne eller lokalisere, jeg ønsket å bruke finne, men når jeg gir den en feilkode som jeg setter den gjennom dev null, tillatelsene nektet, så jeg tar feil og legger lokaliseringen jeg er her:
    finn $ 1 | grep "/ $ {1} \ $"
    men selvfølgelig med dette kommer de alle ut ...
    Tusen takk hvis du leser den.
    Hvis du kan hjelpe meg, ville det være en stor tjeneste.

  12.   luis sa

    Jeg vil at du skal hjelpe meg med dette.
    1. -Tast inn et helt tall på tastaturet og vis det to ganger og tredobbelt tallet på skjermen. 2.- Lag et program for å avgjøre om et tall som tastes inn på tastaturet er delbart med 3 eller ikke.
    3.- Lag et program for å finne summen av: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- Lag et program for å finne summen 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Lag et program som skriver ut ordet Linux på skjermen 10 ganger
    6.-Lag et program som skriver ut ordet Linux på skjermen det antall ganger som en bruker har angitt.
    7.-Angi et beløp i timer og konverter dem til minutter og sekunder.
    8.-Beregn arealet til en trekant
    9.-Skriv inn et tall på tastaturet, så hvis du skriver inn 2, skal det være kvadrat, 3 kubert, 4 til det fjerde og så videre opp til 6.
    10-Beregn pensjonen en student må betale, spesialitetskoden må legges inn og etterskuddsdager:
    KODE
    SPESIALITET
    BELØP
    VARIGHET PER DAG
    1
    REGNSKAP
    160
    1
    2
    SYKEPLEIE
    150
    1.5
    3
    SEKRETARIAT
    140
    2
    4
    TURISME
    180
    2.5
    5
    REGNSKAP
    160
    1
    Du må vise spesialiteten du studerer, kostnaden for pensjonen, misligholdet og det totale beløpet som skal betales.

  13.   Charly sa

    Hei, kan noen hjelpe meg?
    Jeg trenger «Be om tre ord med tastaturet og vis dem i alfabetisk rekkefølge fra A til Å»
    På Bash eller sh språk for LINUX porfaborrrr