Programmering i bash - del 2

Andra delen Detta mini-handledning programmering i Bash, där vi lär oss att använda cykler och andra verktyg som hjälper oss att förbättra funktionerna i vår skript.

Om villkorligt

Funktionen för If är att tillämpa ett filter och utföra en operation eller uppgift för varje typ av filter som används. Dess struktur är som följer:

Om [villkor]; sedan elif kommandon [villkor]; sedan annars kommandon; fi-kommandon

Ett exempel visas bredvid For-slingan i respektive avsnitt.

cykler

1. While: det kommer att utföra alla kommandon som anges mellan do och done så länge villkoret är sant. Om vi ​​vill skicka jämförelseoperatörer till det måste uttrycket vara inom parentes.

medan CONDITION / COMMAND gör kommandon

Exempel: multiplikationstabell för ett tal

#! / bin / bash X = 1 eko "Ange ett tal och tryck ENTER" läs M # Slingan styr att X är mindre än eller lika med 10 medan [$ X –le 10] gör # I R lagrar vi multiplikationen av X med MR = $ [X * M] # Denna multiplikation är tryckt på skärmekot "$ M * $ X = $ R" # Med let ökar vi värdet på X med 1 enhet, låt X = $ X + 1 klar

2. För: lagrar en lista med element i en variabel, som kommer att användas för att utföra vissa operationer med varje cykel.

för VARIABLE i ELEMENTS gör kommandon

Exempel: program som kopierar en fil från en mapp till en annan och ersätter en gammal fil.

# / bin / bash #Vi skapar käll- och målkataloger ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Vi placerar oss i käll-cd $ ORIGIN # Av alla filer vill vi bara ha den som är # ring FILE for FILE * gör ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f filtrerar oss vanliga filer, eftersom kataloger är # inget bra för oss. –Nt filtrerar bort # filer “nyare” än de # hittades i målmappen om [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; sedan eko "Kopiera $ FILE ..." # vi kopierar filen med cp cp $ FILE $ ARCH-DESTINATION färdig #We cd för att avsluta källmappen cd

Ett annat exempel: skript där användaren måste gissa ett slumptal som genereras av datorn.

# / bin / bash # Ett slumpmässigt tal genereras från 1 till 10, det sparas # i RANDOM RANDOM = $ [$ RANDOM% 10 + 1] medan [1] echo –n "Ange ett nummer:" läs NUM # Jämför om antalet som användaren har valt är # lika med RANDOM; kom ihåg att använda $ för att utvärdera #värdena för variablerna och inte deras namn om [“$ NUM –eq“ $ RANDOM ”]; sedan eko "Du har rätt!" #break gör det möjligt att avsluta slingan medan break # Om antalet är mindre än RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; sedan eko "Det är mindre" "Om inte, är det större än RANDOM annars echo" DET ÄR större "gjort

3. Fram till: ganska lika i struktur till While, förutom att koden alltid körs medan utvärderingen av villkoret är negativ, det vill säga programmet fortsätter att köra "tills tillståndet inträffar"

tills CONDITION / COMMAND gör kommandon

Exempel: skriv ut siffrorna 10-20 i fallande ordning

#! / bin / bash CONT = 20 # Så länge räknaren är mindre än 10 (-lt, "lägre # än") körs koden tills [$ CONT -lt 10]; echo "COUNTER $ CONT" # A CONT subtraheras av en enhet låt CONT- = 1 klar

4. Välj: den här sista cykeln är ett speciellt fall eftersom det vanligtvis används för att snabbt skapa menyer. Det fungerar på samma sätt som For-slingan.

välj VARIABLE i LISTA över utförda kommandon

Exempel: ge användaren möjlighet att fortsätta eller avsluta skriptet.

#! / bin / bash #item är en variabel som svarar på vad #användaren väljer, Fortsätt och Slutför är de #alternativ som är tillgängliga för honom, även om andra alternativ kan läggas till # mer välj objekt i Fortsätt Slutför gör #Om användaren väljer avsluta programmet, sedan med paus avslutar vi cykeln. om [$ item = "Finish"]; sedan bryta fi gjort
Tack Juan Carlos Ortiz!

Innehållet i artikeln följer våra principer om redaktionell etik. Klicka på för att rapportera ett fel här.

13 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras.

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Medium Svårt sade

    Jag tror något så här: tar -cf - Directory | (cd / annat / katalog; tar -xvf -)

    Då skulle det se ut som / annan / katalog / katalog
    På det sättet komprimerade jag en katalog och du komprimerar den på en annan plats ...

  2.   Miguel Angel sade

    Hej, bra tuto, jag lär mig om ämnet och allt är bra, bara att jag inte har kunnat skapa ett program som hjälper mig, för att se om du kan hjälpa mig tack.

    Jag måste göra en cykel, där den som parametrar kommer att få en lista över en källfil, den här listan ger bara namn (utan förlängning), så att cykeln gör följande, leta efter namnet som tagits emot i en katalog (vilket är det vi kommer att leta efter) , extrahera och kopiera filen (fullständigt namn redan med tillägg) och den absoluta sökvägen och skapa den i en annan målfil.

    Hittills har jag följande:

    medan du läser rad
    do
    eko -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    gjort <testlist.txt Hittills har jag läst filen, varje rad den har, men jag kan inte få den att leta efter den filen och extrahera informationen, om du kan hjälpa mig tack, tack. Skål

  3.   Pamela galaviz sade

    Tack så mycket för bidraget 🙂

  4.   Mario Xavier sade

    hej ... Jag hoppas att du kan hjälpa till i nästa övning ... Packa upp filen i tgz i den angivna katalogen, förutom att ange användare och grupp för alla befintliga kataloger och filer, och tilldela behörigheter till filer och kataloger
    Obs: filer redo för läsning och skrivning
    tillstånd för körning av kataloger

  5.   johnk sade

    ARCH-DESTINATION är en variabel där vi vill spara målfilens sökväg, spara för redundans. Sedan, till denna variabel anger vi variabeln DESTINATION, som ovan innehåller sökvägen till mappen Dokument och vi lägger till "variabeln" FIL, som innehåller filnamnet. Om den filen till exempel var list.doc skulle variabeln ARCH-DESTINATION vara lika med /home/Usuario/Documentos/listado.doc

  6.   Låt oss använda Linux sade

    Det är den tidigare artikeln. Du kan komma åt den på http://usemoslinux.blogspot.com

    Kram! Paul.

  7.   Frank sade

    God morgon kompis bara tack, väldigt bra din blogg, men jag kan inte få den första delen av programmering i Bash, där jag får det tack, hälsningar

  8.   Saito Mordraw sade

    Två extraordinära delar, mina uppriktiga gratulationer.

    Helt enkelt underbart.

  9.   Fredy sade

    Bien

  10.   Hugo sade

    Hej, jag gör ett program med ett CASE, vad jag vill att det ska göra och jag vet inte hur, till exempel:

    echo Välj ett alternativ:
    missar
    eko 1. alternativ 1
    eko 2. alternativ 2
    eko 3. alternativ 3
    eko 4. alternativ 4
    eko 5. Avsluta
    läs var
    fall "$ var" i
    1)
    eko "Du valde alternativ 1"
    ;;
    2)
    eko "Du valde alternativ 2"
    ;;
    3)
    kastade ut "….."
    ;;
    4)
    kastade ut "…."
    ;;
    5)
    kastade ut "…"

    ;;
    *)
    eko "fel alternativ"
    ;;
    att C

    ok vad jag inte vet hur man gör det är att när jag väljer alternativ 4 som är att lämna, fråga om jag verkligen vill lämna och ge mig 2 alternativ Y & N

    och den andra är att när du väljer något annat än siffrorna 1..5 rösta inte på mig från manuset ...

    Kan du hjälpa mig tack.

  11.   DAPAMA21 sade

    Hej, jag började skripta för 1 månad sedan och tack vare dina skriptinlägg. Jag kommer att ha gjort ungefär 15-20. Tack så mycket på förhand. Men nu har vår lärare gett oss ett jobb som jag har blivit stillastående för. Eftersom läraren frågar:
    skicka en katalog, kopiera till ditt hem alla filer som finns i katalogen alfabetiskt och ge dem namnet file1 file2 etc ... etc ...
    Nu är jag just nu för att hitta eller lokalisera, jag ville använda find men när jag gav den felkod när jag satte den genom dev null, behörigheterna nekades då får jag fel och lägger lokalisera jag är här:
    hitta $ 1 | grep "/ $ {1} \ $"
    men naturligtvis med detta kommer de alla ut ...
    Tack så mycket om du läser det.
    Om du kan hjälpa mig skulle det vara en stor tjänst.

  12.   luis sade

    Jag skulle vilja att du hjälpte mig med detta.
    1.-Ange ett heltal på tangentbordet och visa två gånger och tredubbla det numret på skärmen. 2. - Gör ett program för att avgöra om ett nummer som matats in på tangentbordet är delbart med 3 eller inte.
    3.- Gör ett program för att hitta summan av: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- Gör ett program för att hitta summan 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Skapa ett program som skriver ut ordet Linux på skärmen 10 gånger
    6.-Skapa ett program som skriver ut ordet Linux på skärmen det antal gånger som en användare har angett.
    7.-Ange ett belopp i timmar och konvertera dem till minuter och sekunder.
    8.-Beräkna ytan av en triangel
    9.-Ange ett nummer på tangentbordet, om du anger 2 ska det vara kvadrat, 3 kubiserat, 4 till det fjärde och så vidare upp till 6.
    10-Beräkna den pension som en student måste betala, specialkoden måste anges och efterföljande dagar:
    KODA
    SPECIALITET
    BELOPP
    UNDER PER DAG
    1
    DATORANVÄNDNING
    160
    1
    2
    AMNING
    150
    1.5
    3
    SEKRETARIAT
    140
    2
    4
    TURISM
    180
    2.5
    5
    BOKFÖRING
    160
    1
    Du måste visa den specialitet du studerar, kostnaden för pensionen, standardvärdet och det totala belopp som ska betalas.

  13.   charly sade

    Hej, kan någon hjälpa mig?
    Jag behöver «Begär tre ord med tangentbordet och visa dem i alfabetisk ordning från A till ö»
    På Bash eller sh-språk för LINUX porfaborrrr