GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-Scripting-Tutorial für Anfänger

Wenn Sie mit Linux-Systemen beginnen, werden Begriffe wie „Shell-Skripting“ verwendet oder „Bash-Scripting“ “ können durchaus üblich sein – aber was bedeuten sie? Bevor wir ins Detail gehen, kann Ihnen das Erlernen der Bash-Skripterstellung helfen, Zeit beim Ausführen und Durchführen verschiedener Systemaufgaben zu sparen, die Linux-Befehlszeile (Terminal) besser zu verstehen und mehrere Systemaufgaben zu automatisieren.

Was ist Bash?

Bash, ein Akronym für "Bourne-Again-Shell" ist ein Unix-Shell- oder Befehlsspracheninterpreter für das GNU-Betriebssystem. Es war die Haupt-Shell für Linux-Distributionen und Apple macOS-Versionen vor macOS Catalina. Bash ist auch für Windows 10 über das Windows-Subsystem für Linux verfügbar.

Bash wird normalerweise in einem Textfenster ausgeführt, das allgemein als Terminal bekannt ist, wo Benutzer Befehle eingeben, um verschiedene Aufgaben auszuführen. Bash kann auch Befehle ausführen, die in einer Datei geschrieben sind, eine Methode, die als "Bash-Skripting" bezeichnet wird

Unterschied zwischen Bash-Skripting und Shell-Skripting

Shell-Skripting und Bash-Skripting sind nicht dasselbe. Beim Bash-Skripting verwenden Sie explizit die Bash-Shell. Andererseits kann Shell-Scripting ein recht weit gefasster Begriff sein, da wir neben Bash auch andere Shells zur Verfügung haben. Einige der gebräuchlichsten sind Korn (ksh), C-Shell (csh), Z-Shell (zsh) und die Bash-Shell (sh). Es wäre jedoch keine Überraschung, Leute zu finden, die Bash-Skripting und Shell-Skripting synonym verwenden, um dasselbe zu meinen. Unser Beitrag zu den Top 6 Open-Source-Shells für Linux enthält eine detaillierte Beschreibung dieser Shells.

In diesem Beitrag werden wir uns mit Bash-Scripting befassen. Standardmäßig verwenden viele verfügbare Linux-Distributionen die Bash-Shell. Sehen Sie sich unseren Beitrag zu den 6 besten Linux-Distributionen für Anfänger an. Um die Shell zu bestätigen, die Sie auf Ihrer aktuellen Linux-Distribution verwenden, führen Sie den Befehl auf dem Terminal aus.

echo $SHELL

Aus dem obigen Bild können Sie sehen, dass der Standardinterpreter in meinem System bash ist. Derzeit verwende ich Ubuntu 20.04 LTS. Tauchen wir ein!

Bash-Skripte verstehen

Bash-Skripte sind Textdateien, die Bash-Befehle enthalten, die ausgeführt werden, um verschiedene Aufgaben auszuführen. Um diese Skripte zu schreiben, benötigen Sie nur einen einfachen Texteditor wie gedit, leaf pad, vim, nano und vieles mehr. Bitte denken Sie daran, Ihre Skripte mit einem .sh zu speichern Erweiterung und als Klartext und nicht als Rich-Text. Einer meiner Lieblingseditoren, den ich zum Schreiben von Skripten verwende, ist der Nano-Editor.

Benennen, Zuweisen von Berechtigungen und Ausführen eines Bash-Skripts

Stellen Sie, wie oben erläutert, sicher, dass Sie die Erweiterung .sh für Ihre Bash-Skripte verwenden. Beispielsweise können Sie ein Skript mit dem Namen fosslinux_backup.sh haben . Es wäre jedoch am besten, wenn Sie bei der Benennung Ihrer Skripts vorsichtig sind. Beispielsweise möchten die meisten Leute die meisten ihrer Skripte als „Test“ speichern. Den meisten unbekannt, gibt es einen in Unix eingebauten Befehl namens test, der Dateitypen prüft und Werte vergleicht. Mit dem which-Befehl können Sie überprüfen, ob es ein Programm mit demselben Namen wie in Ihrem Skript gibt, um Programmkonflikte zu vermeiden.

welcher [Befehl]z.B. welcher Test

Aus der obigen Ausgabe können wir ersehen, dass test bereits ein eingebauter Befehl ist. Um Konflikte zwischen Programmen zu vermeiden, werde ich daher keines meiner Skripte als „test.“ benennen

Um das Skript für jeden Benutzer ausführbar zu machen, verwenden Sie den folgenden Befehl:

chmod +x [script.sh]

Um das Skript für den aktuellen Benutzer ausführbar zu machen, verwenden Sie den folgenden Befehl:

chmod u+x [script.sh]

Führen Sie nun den folgenden Befehl aus, um das Skript auszuführen:

./[Skriptname]

Mit der obigen Methode werden Sie feststellen, dass Sie die cd verwenden müssen Befehl, um in das Verzeichnis zu wechseln, das das Skript enthält, oder übergeben Sie den Pfad zum Skript. Es gibt jedoch eine Problemumgehung dafür. Speichern Sie Ihre Skripte im bin Verzeichnis im Home-Verzeichnis vorhanden.

Bei den letzten Updates enthalten die meisten Distributionen nicht den bin Ordner standardmäßig. Sie müssen es daher manuell erstellen. Indem Sie Ihre Skripte in diesem Ordner ablegen, können Sie das Skript ausführen, indem Sie seinen Namen auf dem Terminal eingeben, ohne cd zu verwenden und ./ Befehle.

Bash-Scripting-Richtlinien

Bevor Sie Ihr erstes Skript schreiben, gibt es einige Richtlinien, die Sie beim Schreiben von Skripten verstehen müssen.

  • Alle Ihre Skripte sollten mit der Zeile „#!/bin/bash.“ beginnen
  • Schreiben Sie jeden Befehl in eine neue Zeile.
  • Jeder Kommentar beginnt mit einem # Symbol.
  • Befehle werden in () eingeschlossen Klammern.

Der #!/bin/bash (Hash-Bang Hack)-Anweisung ist der Pfad zu der Shell, die wir verwenden werden. Wenn Sie eine andere Shell verwenden, müssen Sie diesen Pfad bearbeiten. Uns ist bewusst, dass alle Kommentare mit dem # beginnen Symbol. Allerdings, wenn gefolgt von einem (!) Markierung im Hash-Bang-Hack wird das Skript gezwungen, mit der Shell auszuführen, auf die diese Zeile zeigt. In unserem Fall ist es die Bash-Shell.

Ihr erstes Bash-Skript

Wie die meisten Programmiersprachen schreiben wir ein Skript, das “Hello World” ausgibt Aussage bei der Ausführung. Öffnen Sie Ihren bevorzugten Texteditor und fügen Sie die folgenden Befehle ein. Speichern Sie die Textdatei als fossHelloWorld.sh oder jeder andere Name, der kein eingebauter Befehl ist.

#!/bin/bash#Dieses Skript gibt "Hello World" auf dem Terminalecho "Hello World" aus

Nachdem Sie die Datei gespeichert haben, machen Sie sie ausführbar, indem Sie den folgenden Befehl ausführen:

chmod +x fossHelloWorld.sh

Führen Sie es jetzt mit dem folgenden Befehl aus:

./fossHelloWorld.sh

Das obige Skript hat nur drei Zeilen. Der erste ist der Hash-Bang-Hack, den wir oben besprochen haben, der zweite ist ein Kommentar und der dritte ist der Befehl, der ausgeführt wird. Beachten Sie, dass Kommentare niemals ausgeführt werden.

Sehen wir uns andere Bash-Skriptfunktionen an, die Sie verwenden können.

Echo-Befehl

Der Echo-Befehl wird verwendet, um die Ausgabe auf der Linux-Befehlszeile oder im Terminal zu drucken. Wenn Sie Entwickler sind und schon einmal mit PHP gearbeitet haben, müssen Sie diesen Befehl auch schon einmal kennengelernt haben. Lassen Sie uns ein kleines Bash-Skript schreiben, um zu demonstrieren, wie dieser Befehl funktioniert.

#!/bin/bash#Lassen Sie uns die erste Zeile ausgebenecho "This is Fosslinux.com - With a new line"#Lassen Sie uns die zweite Anweisung ohne eine neue Zeile ausgebenecho -n "This is Fosslinux - No new Line" 

Speichern Sie Ihr Skript, weisen Sie die erforderlichen Berechtigungen zu und führen Sie es aus.

Um den Code zu verstehen, gibt der erste echo-Befehl eine Anweisung aus und geht zur nächsten Zeile. Der zweite echo-Befehl hat den -n Argument, das verhindert, dass das Skript zur nächsten Zeile wechselt. Sie können viele andere Optionen mit dem Echo-Befehl verwenden, einschließlich Variablen, wie wir weiter unten sehen werden.

Variablen

Variablen sind ein üblicher und notwendiger Bestandteil jeder Programmiersprache. Man kann Bash-Variablen auf verschiedene Arten deklarieren. Wenn Sie einer Variablen einen Wert zuweisen, müssen Sie keine Symbole verwenden. Wenn Sie jedoch den Wert der Variablen aufrufen, müssen Sie den $ verwenden Zeichen am Anfang der Variablen.

Sie können Variablen auf dem Terminal oder als Skripte verwenden. Führen Sie die folgenden Befehle auf Ihrem Terminal aus.

meineWebsite ="Fosslinux.com"echo $meineWebsite

Lassen Sie uns nun ein Bash-Skript erstellen, das zwei Eingaben vom Benutzer entgegennimmt und sie in den Variablen $x speichert und $y . Das Skript prüft dann, ob die beiden Werte gleich sind oder nicht.

#!/bin/bashecho "Geben Sie die erste Zahl ein"read aecho "Geben Sie die zweite Zahl ein"read bif [[ $a -eq $b ]]thenecho "Zahlen sind gleich"elseecho "Zahlen sind nicht gleich"fi

Speichern Sie das Skript und führen Sie es aus. Aus dem Bild unten können Sie sehen, dass wir verschiedene Werte eingegeben haben und das Skript prüfen konnte, ob sie gleich sind oder nicht.

Schauen wir uns nun den Code genauer an. Die ersten beiden Echo-Anweisungen fordern den Benutzer auf, die erste und zweite Zahl einzugeben. Der read Der Befehl wartet darauf, dass der Benutzer eine Zahl eingibt, und speichert sie in der angegebenen Variablen. In unserem Fall ist das a und b . Wir haben dann eine if-Anweisung, die prüft, ob die beiden Werte gleich sind oder nicht.

Bedingte Anweisung

In jeder Programmiersprache steuern bedingte Anweisungen den Ablauf eines Programms. Ein Stück Code wird nur ausgeführt, wenn eine bestimmte Bedingung erfüllt ist. Einige der häufigsten bedingten Anweisungen sind „if-then-else“ und „case“. Unten ist die grundlegende Syntax der if-then-else-Anweisung.

if [[ Bedingung ]]dannelsefi

Sehen Sie sich das folgende Skript an, das die bedingte Anweisung „if-then-else“ verwendet.

#!/bin/bashecho "Geben Sie Ihr Alter ein"read ageif ((age> 18 ))thenecho "Du kannst zur Party gehen"elseecho "Du bist nicht berechtigt, zur Party zu gehen"fi

Lassen Sie uns das obige Skript durchgehen. Wir haben das echo Anweisung, die Benutzer auffordert, ihre Altersnummer einzugeben. Der read -Anweisung speichert das eingegebene Alter in einer Variablen „Alter“. Wir haben dann eine if-then-else Bedingungsanweisung, die prüft, ob das Alter größer als 18 ist, bevor der Benutzer angewiesen wird.

Schleifen

Schleifen werden häufig verwendet, wenn Sie einen Codeabschnitt mehrmals ausführen möchten. Wenn ich zum Beispiel 1000 Zeilen der Anweisung „Willkommen bei Fosslinux“ wiederholen möchte, würde ich 1000 Echo-Anweisungen benötigen. Bei Schleifen muss ich jedoch nur angeben, wie oft die Anweisung auf dem Terminal wiederholt oder gedruckt werden soll. Bash unterstützt drei Arten von Schleifen; For-Schleife, While-Schleife und die Until-Schleife. Sehen wir uns jeden von ihnen an.

  • Die For-Schleife

Eine For-Schleife wird verwendet, um eine Liste mit angegebenen Daten oder ein Array zu durchlaufen. Unten ist die grundlegende Syntax der Bash-For-Schleife;

für Wert in 1 2 3 4 5 .. Ndoinstruction1instruction2instruction-Ndone

oder,

für VALUE in Datei1 Datei2 Datei3doinstruction1 auf $VALUEinstruction2instruction-Ndone

Sehen Sie sich das folgende Skript an. Es iteriert durch die angegebenen Wochentage und gibt sie Zeile für Zeile auf dem Terminal aus.

#Lesen Sie einen Wochentagnamen in jeder Iteration der Schleife für Tag in Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntagdoecho "$day"done

Speichern wir das Skript als ForLoop.sh und führe es aus. Unten ist ein Screenshot der Ausgabe.

Das ist nur ein einfaches Beispiel dafür, was Sie mit der For-Schleife machen können. Sie können es auch mit bedingten Anweisungen kombinieren, um eine bestimmte Aufgabe zu erledigen.

  • Die While-Schleife

Die While-Schleife führt eine bestimmte Aufgabe aus, während eine bestimmte Bedingung wahr bleibt. Bei jeder Iteration überprüft die Schleife zuerst die Bedingung, bevor sie die Anweisungen ausführt. Wenn die Bedingung falsch ist, wird die Schleife beendet. Die grundlegende Syntax der Bash-While-Schleife lautet wie folgt:

während [CONDITION]do[COMMANDS]done

Zum Beispiel können wir ein Skript haben, das die Anweisung "Willkommen bei FOSSLINUX.COM" ausgibt 20 Mal, bis eine Variable X auf 20 gesetzt wird. Versuchen wir, das praktisch umzusetzen. Sehen Sie sich das folgende Skript an.

#!/bin/bashx=1while [ $x -le 20 ]doecho "Welcome to FOSSLINUX.COM"x=$(( $x + 1 ))done

Speichern wir das Skript als WhileLoop.sh und führe es aus. Unten ist ein Screenshot der Ausgabe.

Werfen wir einen Blick auf das While-Loop-Skript oben. Wir deklarieren zuerst eine Variable X und geben ihr den Wert 1. Dann erstellen wir eine While-Anweisung, die die Anweisung „Willkommen bei FOSSLINUX.COM“ ausgibt, während X kleiner als 20 ist. Schließlich erhöhen wir X nach jeder Iteration um eins.

  • Die Bis-Schleife

Die Bash-Until-Schleifen werden verwendet, um eine Reihe von Anweisungen oder Befehlen auszuführen, solange die festgelegte Bedingung als falsch ausgewertet wird. Nachfolgend finden Sie die grundlegende Syntax der Until-Schleife.

bis [CONDITION][INSTARUCTIONS/COMMANDS]erledigt

Ähnlich wie bei der While-Schleife wertet die Until-Schleife zunächst die gesetzte Bedingung aus, bevor die Anweisungen oder Befehle ausgeführt werden. Wenn die Bedingung als falsch ausgewertet wird, werden Anweisungen ausgeführt. Die Schleife wird beendet, wenn die Bedingung wahr ist. Sehen Sie sich das Beispiel unten an.

#!/bin/bashcount=0until [ $count -gt 5 ]doecho Counter:$count((count++))done

Nachdem wir das obige Skript gespeichert und ausgeführt haben, erhalten wir die folgende Ausgabe:

Die obigen Skripte erstellen zuerst einen Variablenzähler und setzen ihn auf Null (0). Das ist die Bedingung, die den Ablauf unseres Programms steuert. Die Until-Schleife prüft, ob der Zählwert größer als 5 ist. Wenn dies nicht der Fall ist, gibt sie die übergebenen Anweisungen aus. Wenn der Wert jedoch größer als 5 ist, wird die Schleife sofort beendet. Zuletzt erhöhen wir den Zählwert um 1 (count++).

Bash-Funktionen

Bei der Programmierung und Skripterstellung werden Funktionen verwendet, um einen wiederverwendbaren Codeabschnitt zu speichern, der zum Ausführen einer bestimmten Aufgabe benötigt wird. Wenn Sie also ähnliche Befehle haben, die Sie an verschiedenen Stellen in Ihrem Skript ausführen möchten, müssen Sie diese Befehle nicht wiederholt schreiben. Schließen Sie sie in eine Funktion ein und führen Sie stattdessen die Funktion aus.
Im Folgenden finden Sie die grundlegende Syntax der Bash-Funktion.

Funktionsname () {}

oder,

Funktion Funktionsname {}

Lassen Sie uns ein einfaches Skript erstellen, das Funktionen verwendet. Wir erstellen zunächst eine Funktion namens „myFunction“, die beim Aufruf die Aussage „Hallo ich bin die erste Funktion“ ausgibt. Die zweite Funktion „myCities“ ist etwas fortgeschritten, da sie übergebene Argumente entgegennimmt. Die Argumente werden nach Aufruf des Funktionsnamens übergeben. Sie sind in der Funktion als $1.

zugänglich
#!/bin/bashmyFunction () {echo "Hallo, ich bin die erste Funktion"echo "Hallo, ich bin die erste Funktion"echo}echo "Das ist die zweite Funktion"function myCities () {echo Hallo $1}myFunctionmyCities Washington, D.CmyCities Phoenix

Nach dem Speichern und Ausführen des Skripts erhalten wir die folgende Ausgabe.

Bash-Menüs

Wenn Sie ein Skript schreiben, um eine erweiterte Aufgabe auszuführen, muss der Benutzer möglicherweise eine einzelne Option aus mehreren Optionen auswählen, die auf dem Terminal angezeigt werden. Um das zu erreichen, verwenden wir die Bash select Befehl.

Es erstellt ein einfaches Menüskript, das die Benutzer auffordert, ihre bevorzugten Linux-Distributionen aus einer Liste auszuwählen. Sehen Sie sich das folgende Skript an.

#!/bin/bash#Nachricht für den Benutzer druckenecho "Wählen Sie Ihre bevorzugte Linux-Distribution"wählen Sie die Distribution in Ubuntu Fedora OpenSUSE DeepIN Parrot ArchLinux Kalido#Drucken Sie den ausgewählten Wert, wenn [[ $distro =="Exit" ]]dannexit 0elseecho "Ausgewählte Linux-Distribution ist $distro"fidone

Speichern wir das Skript als menu.sh und führen es aus. Wir erhalten die Ausgabe unten.

Im obigen Skript haben wir eine Liste von Seven Linux-Distributionen, aus der der Benutzer eine auswählen kann. Nachdem sie eine Auswahl getroffen haben, wird sie in der Variablen distro gespeichert und später durch Verketten mit der Zeichenfolge „Ausgewählte Linux-Distribution ist.“ gedruckt Bash-Auswahlmenüs können sehr nützlich sein, besonders wenn Sie mehrere Skripte haben, die verschiedene Aufgaben ausführen, und eines dasjenige auswählen muss, das sie ausführen möchten.

Arithmetik

Jede Programmiersprache unterstützt die Durchführung arithmetischer Operationen, und Bash-Scripting ist keine Ausnahme. Wie wir arithmetische Operationen durchführen, ist jedoch etwas anders. Unten ist eine der Möglichkeiten, wie Sie arithmetische Operationen in Bash ausführen können. Wir werden uns vier Arten von arithmetischen Operationen ansehen – Summe, Division und Multiplikation.

#!/bin/bash# Berechnen Sie das Summenergebnis=$((70+15))# Drucken Sie den Summenwertecho "sum =$result"# Berechnen Sie das Divisionsergebnis=$((100/25))# Drucken Sie den Divisionswertecho " division =$result"#Calculate Multiplicationresult=$((15*15))echo "Multiplication =$result"

Speichern wir das obige Skript als arithmetic.sh und führen es aus. Wir erhalten die Ausgabe unten.

Schlussfolgerung

Dies ist ein vollständiger Anfängerleitfaden für den Einstieg in die Bash-Skripterstellung. Bash bietet jedoch mehr als das, was in diesem Tutorial behandelt wird. Einer der Orte, die ich empfehlen würde, um Ihre Fähigkeiten zu verbessern, ist das Bash-Referenzhandbuch von GNU. Wenn Sie auf Probleme stoßen oder diesen Beitrag kommentieren, zögern Sie nicht, auf die Kommentare unten zu klicken.


Linux
  1. Bash-Skripting-Tutorial für Anfänger:Was es ist, wie man eines schreibt und Skriptbeispiele

  2. Linux-CD-Befehls-Tutorial für Anfänger (8 Beispiele)

  3. Linux-Kommando-Tutorial für Anfänger (5 Beispiele)

  4. Linux-df-Befehls-Tutorial für Anfänger (8 Beispiele)

  5. Linux Date Command Tutorial für Anfänger (8 Beispiele)

Linux-nm-Befehls-Tutorial für Anfänger (10 Beispiele)

Linux OD Command Tutorial für Anfänger (6 Beispiele)

Linux w Command Tutorial für Anfänger (5 Beispiele)

Linux ss Command Tutorial für Anfänger (8 Beispiele)

Bash Heredoc-Tutorial für Anfänger

Shell-Scripting für Anfänger – So schreiben Sie Bash-Scripts unter Linux