So erstellen Sie ein Shell-Skript unter Linux
Shell ist eine Schnittstelle des Betriebssystems. Es nimmt Befehle von Benutzern entgegen und interpretiert sie an das Betriebssystem. Wenn Sie eine Reihe von Befehlen gleichzeitig ausführen möchten, können Sie dies tun, indem Sie ein Shell-Skript erstellen. Shell-Skripte sind sehr nützlich, wenn Sie eine Aufgabe routinemäßig erledigen müssen, beispielsweise ein Backup erstellen. Sie können diese Befehle auflisten und alle mit nur einem einzigen Skript ausführen. Sehen wir uns an, wie Sie ein Shell-Skript erstellen und unter Linux ausführen können.
Erstellen eines Shell-Skripts
Melden Sie sich bei Ihrem Linux-Computer an, öffnen Sie das Terminal und navigieren Sie zu dem Ordner, in dem Sie das Shell-Skript speichern möchten. Shell-Skripte enden mit der Erweiterung .sh. Lassen Sie uns unser erstes Shell-Skript erstellen. Eintippen
touch script.sh
Da diese Skriptdatei standardmäßig nicht ausführbar ist, müssen wir dieser Datei die Ausführungsberechtigung erteilen. Eintippen
chmod +x script.sh
Jetzt werden wir diesem Shell-Skript einige Befehle hinzufügen. Öffnen Sie dieses Shell-Skript mit einem beliebigen Texteditor Ihrer Wahl (befehlszeilenbasiert oder GUI-basiert) und fügen Sie einige Befehle hinzu. Wir werden Nano verwenden. Eintippen
nano script.sh
Fügen Sie die folgenden Befehle hinzu, um dieses Shell-Skript zu testen
echo This is my first shell script touch testfile ls echo End of my shell script
Speichern Sie die Änderungen und führen Sie das Shell-Skript aus, indem Sie Folgendes eingeben
./script.sh
Screenshot der obigen Schritte
Wie Sie sehen, wurden alle angegebenen Befehle ausgeführt.
Kommentare im Shell-Skript
Jede Zeile, die im Shell-Skript mit # beginnt, wird als Kommentar behandelt und von der Shell während der Ausführung ignoriert, mit Ausnahme der Shebang-Zeile, die wir später in diesem Artikel sehen werden. Sehen wir uns ein Beispiel an. Es wird ein Shell-Skript mit folgendem Inhalt erstellt.
# This is a comment echo Testing comments in shell script
Kommentare im Shell-Skript
Wie Sie sehen, wird der Kommentar ignoriert.
Variablen im Shell-Skript
Ja, Shell-Skripte unterstützen die Verwendung von Variablen und wir müssen den Typ einer Variablen während ihrer Deklaration nicht definieren. Es gibt zwei Arten von Variablen:
- Systemdefinierte Variablen
- Benutzerdefinierte Variablen.
Systemdefinierte Variablen, auch Umgebungsvariablen genannt, werden im Allgemeinen großgeschrieben. Mit dem Befehl printenv können Sie alle aktuellen Umgebungsvariablen anzeigen. Benutzerdefinierte Variablen werden vom Benutzer festgelegt und sind nur während der Skriptausführung vorhanden. Sie können eine Variable definieren, indem Sie einfach ihren Namen eingeben und einen Wert mit dem Zeichen = zuweisen und auf eine Variable zugreifen, indem Sie vor dem Variablennamen ein $ hinzufügen. Variablen werden im folgenden Beispielskript demonstriert.
# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name
Variablen im Shell-Skript
Definieren des Shell-Skript-Interpreters
Unter Linux sind viele Shells verfügbar, z. B. die Bourne-Shell (sh), die Korn-Shell (ksh) und die GNU Bourne-Again Shell (bash). Skripte, die für die SH-Shell geschrieben wurden, werden Shell-Skripte genannt und können sowohl von der KSH- als auch von der Bash-Shell interpretiert werden. ksh und Bash sind verbesserte Versionen der ursprünglichen sh-Shell und verfügen über mehr Funktionen als sh. Bash ist im Allgemeinen die Standard-Shell in den meisten Linux-Distributionen und Skripte, die speziell für die Bash-Shell geschrieben wurden, werden Bash-Skripte genannt.
Sie können angeben, welche Shell das Skript verwenden soll, auch wenn das Skript von einem anderen Shell-Terminal ausgeführt wird. Fügen Sie dazu #! oben in der Skriptdatei, gefolgt vom absoluten Pfad der Shell Ihrer Wahl. Um Bash als Interpreter anzugeben, fügen Sie die folgende Zeile oben im Shell-Skript hinzu.
#!/bin/bash
Diese Linie wird Shebang-Linie genannt.
Notiz: Dies funktioniert nur, wenn Bash auf Ihrem System installiert ist.
Vergleichsoperatoren
Sie können zwei Variablen im Shell-Scripting vergleichen. Wir führen diese Vergleiche durch, um Entscheidungen zu treffen. Wir werden später in diesem Artikel sehen, wie das geht. Zuvor finden Sie hier jedoch eine Liste einiger Vergleichsoperatoren.
Ganzzahlvergleich
| Operator | Beschreibung |
|---|---|
| -Gl | ist gleich |
| - Ist | ist ungleich zu |
| -gt | ist größer als |
| -ge | größer oder gleich ist |
| -lt | ist weniger als |
| -Die | kleiner oder gleich ist |
String-Vergleich
| Operator | Beschreibung |
|---|---|
| == | ist gleich |
| != | ist ungleich zu |
| < | ist kleiner als, in alphabetischer ASCII-Reihenfolge |
| > | ist größer als, in alphabetischer ASCII-Reihenfolge |
Wir fügen vorher ein hinzu, da sie bei der Eingabe im [ ]-Konstrukt mit Escapezeichen versehen werden müssen. Sehen wir uns nun an, wo diese verwendet werden.
Bedingte Anweisungen
Bedingte Anweisungen werden verwendet, um einen Codeblock nur dann auszuführen, wenn bestimmte Bedingungen erfüllt sind. Shell-Skripte unterstützen die Verwendung von bedingten Anweisungen. Zur Überprüfung der Bedingungen nutzen wir Vergleichsoperatoren. Sehen wir uns einige bedingte Anweisungen an.
If-Anweisung
Es prüft die Bedingung und führt die Befehle aus, wenn die Bedingung wahr ist.
Syntax
if [ condition ] then #statements fi
Sehen wir uns ein Beispiel an.
#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi
.if-Anweisung
If-else-Anweisung
In einer if-else-Anweisung können Sie eine Reihe von Befehlen angeben, die ausgeführt werden sollen, wenn die Bedingung nicht erfüllt ist.
Syntax
if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi
Sehen wir uns ein Beispiel an
#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi
.if-else-Anweisung
Es gibt noch andere bedingte Anweisungen, über die Sie sich informieren können Hier .
Notiz: Geben Sie nach [ und vor ] ein Leerzeichen ein, während Sie die zu prüfende Bedingung angeben, andernfalls erhalten Sie eine Fehlermeldung.
Schleifen
Mithilfe von Schleifen können Sie eine Reihe von Befehlen immer wieder ausführen, bis eine bestimmte Bedingung erfüllt ist. Sehen wir uns einige der Schleifen an.
While-Schleife
Es beginnt mit der Ausführung der angegebenen Befehle, wenn die Bedingung wahr ist, und wiederholt sie, bis die Bedingung falsch ist.
Syntax
while [ condition ] do #set of statements done
Sehen wir uns ein Beispiel an.
#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done
While-Schleife
Wir schließen eine expr-Anweisung in ` ` ein, wenn wir sie einer Variablen zuweisen. Sie können hier mehr über den expr-Befehl lesen.
For-Schleife
In einer for-Schleife durchläuft die Variable eine Liste von Werten und endet, wenn keine weiteren Werte zum Durchlaufen vorhanden sind.
Syntax
for var in val1 val2 val3 do #statements done
Sehen wir uns ein Beispiel an.
#!/bin/sh for var in 2 4 5 8 do echo $var done
for-Schleife
Sie können mehr über Schleifen im Detail lesen Hier .
Positionsargumente
Positionsargumente sind die Argumente oder Werte, die wir beim Ausführen des Skripts an das Shell-Skript übergeben. Der Zugriff erfolgt über die Variablen $0, $1, $2 … $9. Darüber hinaus werden sie durch ${10}, ${11} usw. referenziert. $# speichert die Anzahl der übergebenen Argumente und $0 speichert den Namen des Skripts. Schauen wir uns ein Beispiel an, um das alles zu verstehen.
#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is $0' echo 'First argument is $1' echo 'Second argument is $2'
Um die Argumente zu übergeben, geben Sie sie einfach im Terminal nach dem Skriptnamen ein, wie unten gezeigt.
Positionsargumente
Speichern der Ausgabe von Befehlen
Sie können die Ausgabe von Befehlen in einer Variablen in einem Shell-Skript speichern. Dafür gibt es zwei Möglichkeiten.
Syntax
#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command`
Sehen wir uns ein Beispiel an.
#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d
Speichern der Ausgabe von Befehlen
Exit-Codes von Shell-Befehlen
Immer wenn ein Befehl endet und die Kontrolle an den übergeordneten Prozess zurückgibt, werden Exit-Codes zwischen 0 und 255 zurückgegeben. Exit-Code 0 bedeutet, dass der Befehl erfolgreich war, und jeder andere Exit-Code bedeutet, dass der Befehl nicht erfolgreich war. Sie können den Exit-Code nach der Ausführung eines beliebigen Befehls anzeigen, indem Sie auf die Schaltfläche „$?“ zugreifen. Variable. Siehe das Beispiel unten.
Exit-Code des Shell-Befehls
Sie können manuell einen Exit-Code für Ihr Shell-Skript festlegen. Dies kann mit bedingten Anweisungen verwendet werden, um mitzuteilen, ob der Zweck des Skripts erreicht wurde oder nicht.
Beispiel
#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi
Exit-Code des Shell-Befehls