So erstellen Sie ein Shell-Skript unter Linux

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