Programmierung in Bash - Teil 2

Teil zwei Dies Mini-Tutorial Programmierung in Bash, wo wir lernen zu benutzen ciclos und andere Tools, die uns helfen, die Funktionen unserer zu verbessern Skripte.

Die If-Bedingung

Die Funktion von If besteht darin, einen Filter anzuwenden und eine Operation oder Aufgabe für jeden angewendeten Filtertyp auszuführen. Seine Struktur ist wie folgt:

If [Bedingung]; dann elif befiehlt [Bedingung]; dann sonst Befehle; fi Befehle

Ein Beispiel wird neben der For-Schleife in ihrem jeweiligen Abschnitt gezeigt.

Ciclos

1. While: Es werden alle zwischen do und done angegebenen Befehle ausgeführt, solange die Bedingung erfüllt ist. Wenn wir Vergleichsoperatoren übergeben möchten, muss der Ausdruck in Klammern stehen.

während CONDITION / COMMAND Befehle ausführen

Beispiel: Multiplikationstabelle einer Zahl

#! / bin / bash X = 1 echo "Geben Sie eine Zahl ein und drücken Sie die EINGABETASTE" read M #Die Schleife steuert, dass X kleiner oder gleich 10 ist, während [$ X –le 10] #In R speichern wir die Multiplikation von X mit MR = $ [X * M] # Diese Multiplikation wird auf dem Bildschirmecho "$ M * $ X = $ R" gedruckt. #Mit let erhöhen wir den Wert von X um 1 Einheit let X = $ X + 1 done

2. Für: speichert eine Liste von Elementen in einer Variablen, die verwendet wird, um bestimmte Operationen mit jedem Zyklus auszuführen.

Für VARIABLE in ELEMENTS werden Befehle ausgeführt

Beispiel: Programm, das eine Datei von einem Ordner in einen anderen kopiert und eine alte Datei ersetzt.

# / bin / bash #Wir richten Quell- und Zielverzeichnisse ein ORIGIN = / home / user / Downloads DESTINATION = / home / user / Dokumente # Wir positionieren uns in der Quell-CD $ ORIGIN # Von allen Dateien wollen wir nur das, das # ist Rufen Sie FILE für FILE in * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" auf. # -f filtert uns reguläre Dateien, da Verzeichnisse # nichts Gutes für uns sind. –Nt filtert # Dateien heraus, die „neuer“ sind als die im Zielordner gefundenen #, wenn [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; dann echo "Kopieren von $ FILE ..." # wir kopieren die Datei mit cp cp $ FILE $ ARCH-DESTINATION fi done #Wir cd, um die Quellordner-CD zu verlassen

Ein weiteres Beispiel: Skript, bei dem der Benutzer eine vom Computer generierte Zufallszahl erraten muss.

# / bin / bash #Eine Zufallszahl wird von 1 bis 10 generiert. Sie wird # in RANDOM RANDOM = $ [$ RANDOM% 10 + 1] gespeichert, während [1] echo –n "Geben Sie eine Zahl ein:" read NUM # Vergleichen Sie, ob die vom Benutzer gewählte Nummer # gleich RANDOM ist. Denken Sie daran, $ zu verwenden, um die #Werte der Variablen und nicht ihre Namen auszuwerten, wenn [“$ NUM –eq“ $ RANDOM ”]; dann Echo "Du hast es richtig gemacht!" #break ermöglicht das Beenden der Schleife während break #Wenn die Zahl kleiner als RANDOM ist elif [“$ NUM –gt“ $ RANDOM ”]; dann echo "Es ist weniger" "Wenn nicht, ist es größer als ZUFÄLLIG sonst echo" ES IST größer "fi erledigt

3. Bis: Ganz ähnlich aufgebaut wie While, außer dass der Code immer ausgeführt wird, während die Auswertung der Bedingung negativ ist, dh das Programm wird "bis die Bedingung eintritt" weiter ausgeführt.

bis CONDITION / COMMAND Befehle ausführen

Beispiel: Drucken Sie die Zahlen 10-20 in absteigender Reihenfolge

#! / bin / bash CONT = 20 # Solange der Zähler kleiner als 10 ist (-lt, "niedriger als"), wird der Code ausgeführt, bis [$ CONT -lt 10]; Echo "COUNTER $ CONT" #A CONT wird von einer Einheit subtrahiert, die CONT- = 1 erledigt

4. Wählen Sie: Dieser letzte Zyklus ist ein Sonderfall, da er im Allgemeinen verwendet wird, um Menüs schnell zu erstellen. Es funktioniert ähnlich wie die For-Schleife.

Wählen Sie VARIABLE in der Liste der ausgeführten Befehle

Beispiel: Geben Sie dem Benutzer die Möglichkeit, das Skript fortzusetzen oder zu beenden.

#! / bin / bash #item ist eine Variable, die auf die vom #Benutzer gewählten Optionen reagiert. Weiter und Fertig stellen sind die # Optionen, die ihm zur Verfügung stehen. Es können jedoch auch andere Optionen hinzugefügt werden. # Weitere Elemente in Fortsetzung Fertig stellen auswählen #Wenn der Benutzer dies wünscht Beenden Sie das Programm, und mit Pause verlassen wir den Zyklus. if [$ item = "Finish"]; dann brechen fi fertig
Vielen Dank, Juan Carlos Ortiz!

Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   Mittelschwer sagte

    Ich denke so etwas: tar -cf - Directory | (cd / other / directory; tar -xvf -)

    Dann würde es wie / ein anderes / Verzeichnis / Verzeichnis aussehen
    Auf diese Weise habe ich ein Verzeichnis komprimiert und Sie dekomprimieren es an einer anderen Stelle.

  2.   Miguel Angel sagte

    Hallo, gutes Tuto, ich lerne etwas über das Thema und alles ist in Ordnung, nur dass ich kein Programm erstellen konnte, das mir hilft, um zu sehen, ob Sie mir bitte helfen können.

    Ich muss einen Zyklus durchführen, in dem eine Liste einer Quelldatei als Parameter empfangen wird. Diese Liste enthält nur Namen (ohne Erweiterung), sodass der Zyklus die folgenden Schritte ausführt. Suchen Sie nach dem Namen, der in einem Verzeichnis empfangen wurde (nach dem wir suchen werden). , extrahieren und kopieren Sie die Datei (vollständiger Name bereits mit Erweiterung) und den absoluten Pfad und erstellen Sie sie in einer anderen Zieldatei.

    Bisher habe ich folgendes:

    während Zeile lesen
    do
    echo -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    done <testlist.txt Bisher habe ich die Datei in jeder Zeile gelesen, aber ich kann sie nicht dazu bringen, nach dieser Datei zu suchen und die Informationen zu extrahieren. Wenn Sie mir bitte helfen können, danke. Prost

  3.   Pamela galaviz sagte

    Vielen Dank für den Beitrag 🙂

  4.   Mario Xavier sagte

    hi ... Ich hoffe, Sie können in der nächsten Übung helfen ... Entpacken Sie die Datei in tgz im angegebenen Verzeichnis, geben Sie Benutzer und Gruppe für alle vorhandenen Verzeichnisse und Dateien an und weisen Sie Dateien und Verzeichnissen Berechtigungen zu
    Hinweis: Dateien zum Lesen und Schreiben bereit
    Ausführungsberechtigung für Verzeichnisse

  5.   Juanka sagte

    ARCH-DESTINATION ist eine Variable, in der der Pfad der Zieldatei gespeichert werden soll, um Redundanz zu gewährleisten. Dann geben wir dieser Variablen die Variable DESTINATION an, die oben den Pfad zum Ordner "Dokumente" enthält, und fügen die "Variable" -DATEI hinzu, die den Namen der Datei enthält. Wenn diese Datei beispielsweise list.doc wäre, wäre die Variable ARCH-DESTINATION gleich /home/Usuario/Documentos/listado.doc

  6.   Verwenden wir Linux sagte

    Es ist der vorherige Artikel. Sie können unter darauf zugreifen http://usemoslinux.blogspot.com

    Umarmung! Paul.

  7.   Frank sagte

    Guten Morgen Kumpel, danke, dein Blog ist sehr gut, aber ich kann den ersten Teil der Programmierung in Bash nicht bekommen, wo ich es bekomme, danke, Grüße

  8.   Saito Mordraw sagte

    Zwei außergewöhnliche Teile, meine aufrichtigen Glückwünsche.

    Einfach wunderbar.

  9.   Fredy sagte

    gut

  10.   Hugo sagte

    Hallo, ich mache ein Programm mit einem CASE, was ich möchte, und ich weiß nicht wie, zum Beispiel:

    echo Wählt eine Option aus:
    Echo
    Echo 1. Option 1
    Echo 2. Option 2
    Echo 3. Option 3
    Echo 4. Option 4
    Echo 5. Beenden
    Lesen Sie var
    case "$ var" in
    1)
    echo "Sie haben Option 1 ausgewählt"
    ;;
    2)
    echo "Sie haben Option 2 ausgewählt"
    ;;
    3)
    rauswerfen "….."
    ;;
    4)
    rauswerfen "…."
    ;;
    5)
    rauswerfen "…"

    ;;
    *)
    Echo "falsche Option"
    ;;
    esac

    ok, ich weiß nicht, wie ich es machen soll, wenn ich Option 4 auswähle, die ich verlassen möchte, frage ich, ob ich wirklich gehen möchte, und gib mir 2 Optionen J & N.

    und das andere ist, dass, wenn Sie etwas anderes als die Zahlen 1..5 auswählen, Sie nicht aus dem Skript für mich stimmen….

    Könnten Sie mir helfen, danke.

  11.   DAPAMA21 sagte

    Hallo, ich habe vor 1 Monat mit dem Scripting begonnen und danke an deine Script-Beiträge. Ich werde ungefähr 15-20 getan haben. Vielen Dank im Voraus. Aber jetzt hat uns unser Lehrer einen Job gegeben, in dem ich stagniert habe. Da fragt der Lehrer:
    Wenn Sie ein Verzeichnis übergeben, kopieren Sie alle Dateien, die sich in diesem Verzeichnis befinden, alphabetisch nach Hause und benennen Sie sie Datei1 Datei2 etc ... etc ...
    Jetzt bin ich im Moment des Findens oder Lokalisierens, ich wollte find verwenden, aber wenn ich ihm einen Fehlercode gebe, wie ich ihn durch dev null gesetzt habe, werden die Berechtigungen verweigert, dann irre ich mich und setze den Lokalisierer, den ich hier bin:
    Suchen Sie $ 1 | grep "/ $ {1} \ $"
    aber damit kommen sie natürlich alle raus ...
    Vielen Dank, wenn Sie es lesen.
    Wenn Sie mir helfen können, wäre es ein großer Gefallen.

  12.   Luis sagte

    Ich möchte, dass Sie mir dabei helfen.
    1.-Geben Sie eine ganze Zahl auf der Tastatur ein und zeigen Sie sie zweimal an und verdreifachen Sie diese Zahl auf dem Bildschirm. 2.- Erstellen Sie ein Programm, um zu entscheiden, ob eine über die Tastatur eingegebene Zahl durch 3 teilbar ist oder nicht.
    3.- Erstellen Sie ein Programm, um die Summe von: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- Erstellen Sie ein Programm, um die Summe 1 + 3 + 5 + 7 + 9 · · · + (2n + 1) zu ermitteln.
    5. Erstellen Sie ein Programm, das das Wort Linux zehnmal auf dem Bildschirm druckt
    6.-Erstellen Sie ein Programm, das das Wort Linux so oft auf dem Bildschirm druckt, wie von einem Benutzer angegeben.
    7.-Geben Sie einen Betrag in Stunden ein und rechnen Sie ihn in Minuten und Sekunden um.
    8.-Berechnen Sie die Fläche eines Dreiecks
    9.-Geben Sie eine Zahl auf der Tastatur ein. Wenn Sie 2 eingeben, sollte diese quadratisch, 3 gewürfelt, 4 bis viert und so weiter bis zu 6 sein.
    10-Berechnen Sie die Rente, die ein Student zahlen muss, den Fachcode und die rückständigen Tage:
    CODE
    SPEZIALITÄT
    BETRAG
    DAUER PRO TAG
    1
    COMPUTER
    160
    1
    2
    PFLEGE
    150
    1.5
    3
    SEKRETARIAT
    140
    2
    4
    TOURISMUS
    180
    2.5
    5
    BUCHHALTUNG
    160
    1
    Sie müssen die Fachrichtung, die Sie studieren, die Kosten der Rente, den Ausfall und den zu zahlenden Gesamtbetrag angeben.

  13.   charly sagte

    Hallo, kann mir jemand helfen?
    Ich brauche «Fordern Sie drei Wörter per Tastatur an und zeigen Sie sie in alphabetischer Reihenfolge von A bis Z an»
    In Bash- oder Sh-Sprache für LINUX porfaborrrr