Bash Scripting – Einführung in Bash und Bash Scripting

Bash Scripting – Einführung in Bash und Bash Scripting

Bash ist ein Befehlszeileninterpreter oder eine Unix-Shell und wird häufig im GNU/Linux-Betriebssystem verwendet. Es wurde von Brian Jhan Fox geschrieben. Es wird als Standard-Anmeldeshell für die meisten Linux-Distributionen verwendet. Scripting wird verwendet, um die Ausführung der Aufgaben zu automatisieren, sodass sie nicht von Menschen einzeln ausgeführt werden müssen. Bash-Scripting ist eine großartige Möglichkeit, verschiedene Arten von Aufgaben in einem System zu automatisieren. Mithilfe von Bash-Skripten können Entwickler sich wiederholende Aufgaben vermeiden.

Bash-Skripting unterstützt Variablen, bedingte Anweisungen und Schleifen genau wie Programmiersprachen. Nachfolgend finden Sie einige Anwendungen von Bash-Skripten:

Inhaltsverzeichnis

Anwendungen von Bash-Skripten:

  • Dateien manipulieren
  • Ausführen von Routineaufgaben wie Backup-Vorgängen
  • Automatisierung

Die Vorteile der Verwendung von Bash-Skripten sind unten aufgeführt:

Vorteile von Bash-Skripten:

  • Es ist einfach.
  • Es hilft, sich wiederholende Aufgaben zu vermeiden
  • Einfach zu verwenden
  • Häufig ausgeführte Aufgaben können automatisiert werden
  • Eine Befehlsfolge kann als einzelner Befehl ausgeführt werden.

Die Nachteile der Bash-Skripte sind unten aufgeführt:

Nachteile von Bash-Skripten:

  • Jeder Fehler beim Schreiben kann kostspielig sein.
  • Für fast jeden ausgeführten Shell-Befehl wird ein neuer Prozess gestartet
  • Langsame Ausführungsgeschwindigkeit
  • Kompatibilitätsprobleme zwischen verschiedenen Plattformen

Wie schreibe ich Bash-Skripte?

Um ein Bash-Skript zu schreiben, folgen wir den Schritten –

  • Zuerst erstellen wir eine Datei mit der Erweiterung .sh.
  • Als nächstes werden wir die darin enthaltenen Bash-Skripte aufschreiben
  • Danach erteilen wir die Ausführungserlaubnis.

Zum Erstellen und Schreiben einer Datei mit der Erweiterung .sh können wir diese verwenden gedit Texteditor. Der Befehl dafür wird sein –

gedit scriptname.sh 

Die erste Zeile unserer Skriptdatei lautet:

#!/bin/bash 

Dadurch wird dem System mitgeteilt, dass es Bash zur Ausführung verwenden soll. Dann können wir unsere eigenen Skripte schreiben.

Schreiben wir einfach ein einfaches Skript auf, das einige Zeilen im Terminal ausgibt. Der Code dafür wird sein –

#!/bin/bash echo 'Hello, techcodeview.com' 

Jetzt speichern wir die Datei und erteilen ihr die Ausführungsberechtigung. Verwenden Sie dazu den folgenden Befehl:

chmod +x scriptname.sh 

Als nächstes verwenden wir zum Ausführen des folgenden Skripts den folgenden Befehl:

./scriptname.sh 

Hier ist die bildliche Darstellung der Terminal-Shell nach der Ausführung der oben genannten Befehle wie folgt:

Hier lautet der Name der Skriptdatei gfg.sh.

Jetzt können wir auch kompliziertere Befehle mithilfe von Bash-Skripten schreiben. Hier ist ein Beispiel, in dem wir eine Bedingungsanweisung verwenden:

Beispielskript:

#!/bin/bash Age=17 if [ '$Age' -ge 18 ]; then echo 'You can vote' else echo 'You cannot vote' fi 

Ausgabe:

You cannot vote 

Hier ist die bildliche Darstellung der Terminal-Shell nach der Ausführung des obigen Skripts wie folgt:

Auf die oben beschriebene Weise können wir mehrere Bash-Befehle gleichzeitig ausführen.

Schauen wir uns nun die anderen wichtigen Konzepte im Zusammenhang mit Bash Scripting an.

Dateinamen und Berechtigungen

Im obigen Beispiel haben wir die Datei mit gespeichert gfg.sh Name und bereitgestellte Ausführungsberechtigung mit chmod Befehl. Lassen Sie uns nun verstehen, warum wir das getan haben.

Beim Schreiben von Bash-Skripten sollten wir unsere Datei mit der Erweiterung .sh speichern, damit das Linux-System sie ausführen kann. Wenn wir zum ersten Mal eine Datei mit der Erweiterung .sh erstellen, verfügt sie über keine Ausführungsberechtigung und ohne die Ausführungsberechtigung funktioniert das Skript nicht. Daher sollten wir ihm die Ausführungsberechtigung mithilfe von erteilen chmod Befehl.

Der Dateiname eines Bash-Skripts kann alles andere als konventionell sein. Es wird empfohlen, für die Benennung einer Skriptdatei Schlangenbuchstaben ( my_bash_script.sh ) oder Bindestriche ( my-bash-script.sh ) zu verwenden.

Variablen

Wir können Variablen im Bash-Scripting verwenden. Nachfolgend finden Sie ein Beispielprogramm, um die Verwendung von Variablen in Bash-Skripten zu verstehen.

Beispielskript:

Name='SATYAJIT GHOSH' Age=20 echo 'The name is $Name and Age is $Age' 

Ausgabe von Variablen:

The name is SATYAJIT GHOSH and Age is 20 

Hier sind also zwei Variablen deklariert Name und noch einer ist Alter. Auf diese Variablen kann über $Name und $Age zugegriffen werden. Das heißt, wir können eine Variable in einem Bash-Skript mit deklarieren Variablenname=Wert und kann darauf zugreifen $VariableName. Hier ist die bildliche Darstellung der Terminal-Shell nach der Ausführung des obigen Skripts wie folgt:

Es gibt zwei Arten von Variablen in Bash Scripting. Wenn eine Variable üblicherweise innerhalb einer Funktion deklariert wird, handelt es sich im Allgemeinen um eine Variable lokale Variable und wenn es außerhalb deklariert wird, dann ist es ein Globale Variable . Im Fall eines Bash-Skripts ist dieses Konzept etwas anders. Hier ist jede Variable, unabhängig davon, ob sie innerhalb einer Funktion oder außerhalb einer Funktion geschrieben wird, standardmäßig eine globale Variable. Wenn wir eine lokale Variable erstellen möchten, müssen wir das Schlüsselwort local verwenden.

Notiz: Es empfiehlt sich, immer eine lokale Variable innerhalb einer Funktion zu verwenden, um unnötige Verwirrung zu vermeiden.

Ein Beispiel dafür finden Sie unten –

Beispielskript:

#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3' 

Ausgabe lokaler und globaler Variablen:

The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry 

Hier in diesem obigen Beispiel ist var2 eine lokale Variable. Wenn wir also über die Funktion darauf zugreifen, funktioniert sie einwandfrei, aber wenn wir versuchen, außerhalb der Funktion darauf zuzugreifen, erhalten wir in der Ausgabe ein leeres Ergebnis.

Andererseits fungiert var3 im Gegensatz zu Programmiersprachen auch dann, wenn es innerhalb einer Funktion definiert ist, als globale Variable und kann außerhalb der Funktion aufgerufen werden. Unten sehen Sie die Darstellung der Terminal-Shell nach der Ausführung des Skripts:

Eingabe und Ausgabe

Eingabe und Ausgabe sind grundlegende Konzepte für Shell-Scripting. Ein Skript kann eine oder mehrere Eingaben annehmen und auch keine oder viele Ausgaben erzeugen. Es kann sogar zu Fehlern kommen. Lassen Sie uns dies anhand eines Beispiels verstehen:

Beispielskript:

echo 'Enter filename' read filename if [ -e $filename ] then echo '$filename is exits on the directory' cat $filename else cat>$filename echo 'Datei erstellt' fi 

Ausgabe von Eingabe und Ausgabe:

Erstes Mal:

Enter filename geeks.txt Hello Geek File created 

Zweites Mal:

Enter filename geeks.txt geeks.txt is exits on the directory Hello Geek 

Im obigen Beispiel konnte das Skript also zum ersten Mal keine Datei mit diesem Dateinamen finden und der else-Block wird ausgeführt. Es hat die Datei erstellt und einige Daten in diese Datei eingefügt. Wenn wir es ein zweites Mal mit demselben Dateinamen ausführen, wird die Datei gefunden. Wird also der if-Block ausgeführt, der den Inhalt der Datei anzeigt? Das Lesen des Dateiinhalts gilt als Eingabe und das erstmalige Einfügen von Daten in die Datei wird als Ausgabe betrachtet. Hier haben wir verwendet > zum Speichern des Inhalts in einer Datei. Der > Zur Umleitung wird die Notation verwendet stdout zu einer Datei. Andererseits können wir verwenden 2> Notation zum Umleiten von stderr und &> um sowohl stdout als auch stderr umzuleiten.

Unten sehen Sie die bildliche Darstellung der Terminal-Shell nach der Ausführung des folgenden Skripts:

Funktionen

In der Programmierung ist eine Funktion ein Codeblock, der einige Aufgaben ausführt und zur Ausführung von Aufgaben mehrmals aufgerufen werden kann. Das einfachste Beispiel für die Verwendung von Funktionen in Bash-Skripten kann wie folgt angegeben werden:

Beispielskript:

#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction 

Ausgabe von Funktionen:

Hello World from techcodeview.com 

Das obige Beispiel zeigt eine Funktion, die beim Aufruf etwas ausgibt.

Die grundlegende Syntax zum Schreiben von Funktionen in einem Bash-Skript lautet also:

Syntax der Funktionen:

#for defining function_name(){ commands ..... } function_name # for calling 

Darüber hinaus können wir auch Funktionen mit übergebenden Argumenten und mit Rückgabewerten haben.

Entscheidungsfindung

Beim Programmieren ist die Entscheidungsfindung eines der wichtigen Konzepte. Der Programmierer stellt eine oder mehrere Bedingungen für die Ausführung eines Codeblocks bereit. Wenn die Bedingungen erfüllt sind, wird dieser Codeblock nur ausgeführt.

Beim Shell-Scripting werden zwei Arten von Entscheidungsanweisungen verwendet. Sie sind -

1. If-else-Anweisung:

Die If else-Anweisung ist eine bedingte Anweisung. Es kann verwendet werden, um zwei verschiedene Codes auszuführen, je nachdem, ob die gegebene Bedingung erfüllt ist oder nicht.

Es gibt einige Varianten innerhalb der if-else-Anweisung. Sie sind -

  • wenn-fi
  • if-else-fi
  • if-elif-else-fi
  • verschachtelte if-else

Die Syntax für die einfachste ist:

Syntax der If-else-Anweisung:

if [ expression ]; then statements fi 

Beispielskript:

Name='Satyajit' if [ '$Name' = 'Satyajit' ]; then echo 'His name is Satyajit. It is true.' fi 

Ausgabe der if-else-Anweisung:

His name is Satyajit. It is true. 

Im obigen Beispiel stimmt der Name während der Bedingungsprüfung überein und die Bedingung wird wahr. Daher wird der im if-Block vorhandene Codeblock ausgeführt. Falls der Name nicht übereinstimmt, erfolgt keine Ausgabe. Unten sehen Sie die bildliche Darstellung der Terminal-Shell nach der Ausführung des folgenden Skripts:

2. Case-Sac-Aussage:

case-sac funktioniert im Grunde genauso wie die switch-Anweisung in der Programmierung. Wenn wir mehrere Bedingungen überprüfen müssen, kann es manchmal kompliziert werden, if-Anweisungen zu verwenden. In solchen Momenten können wir eine Case-Sac-Anweisung verwenden. Die Syntax wird sein –

Syntax der case-sac-Anweisung:

case $var in Pattern 1) Statement 1;; Pattern n) Statement n;; esac 

Beispielskript:

Name='Satyajit' case '$Name' in #case 1 'Rajib') echo 'Profession : Software Engineer' ;; #case 2 'Vikas') echo 'Profession : Web Developer' ;; #case 3 'Satyajit') echo 'Profession : Technical Content Writer' ;; esac 

Ausgabe der case-sac-Anweisung:

Profession : Technical Content Writer 

Im obigen Beispiel führte die case-sac-Anweisung die Anweisung aus, die Teil des übereinstimmenden Musters ist, hier der „Name“. Unten sehen Sie die bildliche Darstellung der Terminal-Shell nach der Ausführung des folgenden Skripts:

String- und numerische Vergleiche

Der String-Vergleich bedeutet, dass wir im Shell-Scripting auch Entscheidungen treffen können, indem wir Vergleiche innerhalb von Strings durchführen. Hier ist eine beschreibende Tabelle mit allen Operatoren –

Operator Beschreibung
== Gibt true zurück, wenn die Zeichenfolgen gleich sind
!= Gibt true zurück, wenn die Zeichenfolgen nicht gleich sind
-N Gibt „true“ zurück, wenn die zu testende Zeichenfolge nicht null ist
-Mit Gibt true zurück, wenn die zu testende Zeichenfolge null ist

Zur Überprüfung der rechnerischen Bedingungen werden arithmetische Operatoren verwendet. Wie kleiner als, größer als, gleich usw. Hier ist eine beschreibende Tabelle mit allen Operatoren –

Operator Beschreibung
-Gl Gleich
-ge Größer als oder gleich
-gt Größer als
- Die Weniger als oder gleich
-lt Weniger als
- Ist Nicht gleich

Unten finden Sie ein einfaches Beispiel dafür:

Beispielskript:

if [ 10 -eq 10 ];then echo 'Equal' fi if [ 'Geeks' == 'Geeks' ]; then echo 'same' #output else echo 'not same' fi 

Ausgabe von String- und numerischen Vergleichen:

Equal same 

In diesem Beispiel handelt es sich beim ersten (-eq) um einen numerischen Vergleich, der auf Gleichheit prüft. Der zweite ( == ) prüft ebenfalls auf Gleichheit, jedoch in Zeichenfolgen. Unten sehen Sie die bildliche Darstellung der Terminal-Shell nach der Ausführung des folgenden Skripts:

Wir werden in den nächsten Artikeln mehr über dieses Konzept erfahren.

Abschluss

In diesem Artikel diskutieren wir Bash-Skripting, das eine wichtige Rolle bei der Automatisierung von Aufgaben in der Linux-Umgebung spielt. Als Befehlszeileninterpreter bietet Bash Entwicklern Einfachheit und Benutzerfreundlichkeit beim Erstellen von Skripts, die Routinevorgänge rationalisieren, Dateien bearbeiten und komplexe Aufgaben ausführen. Während Bash-Skripte die Produktivität steigern können, indem sie sich wiederholende Aktionen vermeiden und Befehlssequenzen effizient ausführen, beinhalten sie auch Überlegungen wie die Verwaltung von Berechtigungen, den Umgang mit Variablen und die Implementierung von Entscheidungsstrukturen. Durch die Beherrschung der Bash-Skripterstellung können Benutzer ihre Leistungsfähigkeit nutzen, um ihren Arbeitsablauf zu optimieren und Systemverwaltungsaufgaben auf Linux-Plattformen zu verbessern.