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
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.
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
Vielen Dank für den Beitrag 🙂
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
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
Es ist der vorherige Artikel. Sie können unter darauf zugreifen http://usemoslinux.blogspot.com
Umarmung! Paul.
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
Zwei außergewöhnliche Teile, meine aufrichtigen Glückwünsche.
Einfach wunderbar.
gut
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.
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.
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.
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