Was sind Bash-Variablen und wie kann man sie verwenden?

Bash ermöglicht es Ihnen, ganze Textstrings auf einzelne Variablen abzubilden, was die Verwendung und das Schreiben von Skripten vereinfacht. Wie funktionieren sie und wie können Sie sie verwenden? Lassen Sie es uns herausfinden.
Inhaltsverzeichnis
- Was ist eine Bash-Variable?
- Echtzeit-Variablen
- Variablen in Skripten
- Permanente Bash-Variablen und Aliase
- Arrays erstellen
- Ausführen von Subshell-Variablen
- Teilstring-Manipulation
- Häufig gestellte Fragen
Was ist eine Bash-Variable?
Variablen sind leicht zu merkende Namen, die verschiedene alphanumerische Werte enthalten können. Sie sind nützlich, da sie es ermöglichen, dieselbe Funktion auf verschiedene Werte anzuwenden, ohne ein Skript/einen Codeabschnitt neu schreiben zu müssen. Sie erleichtern auch das Schreiben des Skripts/des Codeabschnitts, da Sie anstelle von einzelnen Werten denselben Namen für alle verwenden können.
Echtzeit-Variablen
Bash erlaubt die Verwendung von Variablen. Sie können Variablen spontan erstellen und während Ihrer aktuellen Bash-Sitzung wiederverwenden. Sie können Ihre Verwendung von Bash auf viele verschiedene Arten unterstützen und werden nach dem Ende der aktuellen Sitzung gelöscht.
Zum Beispiel, sagen wir, Sie besuchen eine Reihe von Websites. Sie könnten Recherchen durchführen oder Daten scrapen und die folgende Variable erstellen:
sitea=https://www.maketecheasier.com
Danach, wenn Sie unsere Seite mit Firefox besuchen möchten, könnten Sie einfach eingeben:
firefox $sitea
Viel einfacher – und lesbarer. Die $sitea-Variable bleibt mit der Website verknüpft, bis Sie entweder ihren Inhalt manuell ändern oder die Bash-Sitzung endet. Und natürlich können Sie weitere Variablen erstellen, wie siteb, sitec und sited.
Beim Einrichten neuer Variablen können Sie beliebige Namen verwenden und beliebige alphanumerische Strings darin speichern. Beachten Sie jedoch, dass sie standardmäßig groß- und kleinschreibungsempfindlich sind. Daher wäre $sitea nicht dasselbe wie $SiteA. Beachten Sie auch, dass Sie Anführungszeichen verwenden sollten, wenn Sie Strings mit Sonderzeichen (einschließlich Leerzeichen) speichern.
Tipp: Für diejenigen, die neu in Bash sind, beginnen Sie mit diesen grundlegenden Bash-Befehlen.
Variablen in Skripten
Variablen in Bash sind nützlicher beim Schreiben von Skripten, da sie es Ihnen ermöglichen, ein einzelnes Skript zu schreiben, das dann durch verschiedene Strings iterieren oder auf angepasste Datenstücke wirken kann. Angenommen, Sie schreiben ein Skript, das jeder auf seinem Computer verwenden könnte, das aber jedes Mal eine personalisierte Begrüßung anzeigt. Ohne Variablen müssten Sie für jeden Benutzer eine andere Version des Skripts schreiben. Mit Variablen bleibt das Skript gleich und Sie ändern nur den Namen des Benutzers.
Ein solches Skript könnte folgendermaßen aussehen:
#!/bin/bash
username=Ramces
echo$username
Das obige Beispiel mag redundant erscheinen; jedoch werden Variablen mit zunehmender Komplexität des Codes unverzichtbar. Ein Skript könnte Hunderte oder Tausende von Zeilen lang sein und den Namen des Benutzers an verschiedenen Stellen enthalten. Um es besser zu verstehen, betrachten Sie das folgende etwas andere Skript:
#!/bin/bash
username=Linus
echo Hallo $username. Dies ist ein einfaches Skript, das ich geschrieben habe, das Ihren Namen - das heißt, $username - oft wiederholen wird, als tatsächliches Beispiel dafür, wie man Bash-Variablen verwendet. Ich hoffe, es wird Ihnen helfen, zu verstehen, wie Sie Variablen verwenden können, um Ihren Bash-Workflow zu verbessern, $username. In diesem Fall ist die Variable username mit Ihrem Namen verknüpft. Wann immer Bash darauf stößt, ersetzt es sie durch $username.
Das obige Skript verwendet den Namen, der als username-Variable definiert ist, um den Text zu vervollständigen. Wenn Sie den tatsächlichen Namen des Benutzers verwenden, müssten Sie ihn viermal eingeben, dann dasselbe für den nächsten Benutzer tun und noch einmal viermal für den nächsten. Immer wieder. Indem Sie ihn einer Variablen zuweisen, müssen Sie ihn nur einmal für jeden Benutzer ändern, und jede Erwähnung des Benutzernamens im Text wird aktualisiert.
Gut zu wissen: Neben Variablen können Sie auch die for-Schleife in Bash verwenden.
Permanente Bash-Variablen und Aliase
Wir haben gesehen, wie Sie temporäre Variablen festlegen können und wie Sie für etwas Permanentes diese in Ihre eigenen Skripte einfügen können. Sie können auch permanente Variablen in Bash festlegen, indem Sie die Datei „~/.bashrc“ bearbeiten.
- Öffnen Sie die Datei „~/.bashrc“ in Ihrem bevorzugten Texteditor.
nano ~/.bashrc- Wir empfehlen, mit einem Testlauf zu beginnen, indem Sie nur eine einzelne Variable hinzufügen, damit Sie wissen, wo Sie suchen müssen, wenn der Prozess nicht funktioniert. Gehen Sie zum Ende der Datei und fügen Sie in einer neuen Zeile Ihre Variable hinzu.
myname="Ramces Red"
- Speichern Sie Ihre Datei und beenden Sie den Editor. Die Änderungen werden nicht sofort angewendet. Geben Sie Folgendes in Ihr Terminal ein, damit es wirksam wird:
source ~/.bashrc- Verwenden Sie die neu festgelegte Variable in Ihrer Bash-Sitzung:
echo$mynameSie können so viele Variablen einrichten, wie Sie möchten, und Ihre täglichen Abenteuer in Bash erheblich vereinfachen.
Für einen zusätzlichen Schub in der Produktivität ist es auch sinnvoll, eine andere Art von Variable einzurichten: Aliase. Im Gegensatz zu typischen Variablen, die mit Daten verknüpft sind, die Sie in Befehlen verwenden können, werden Aliase anstelle von tatsächlichen Befehlen verwendet.
So wie Sie eine leicht zu merkende Variable verwenden können, um lange Textstrings zu halten, können Sie Aliase als einfache Alternativen zu komplexen Befehlen verwenden. Hier können Sie mehr darüber erfahren, wo wir einen gesamten 7zip-Komprimierungsbefehl in einen zweibuchstabigen Alias umwandeln.
Schließlich, selbst wenn Sie eine Variable in .bashrc dauerhaft festgelegt haben, können Sie ihr vorübergehend einen anderen Wert zuweisen, wie wir zuvor gesehen haben. Die Variable zeigt den neuen Inhalt an, bis die aktuelle Bash-Sitzung endet (nach dem Abmelden oder Neustarten) oder Sie die .bashrc-Datei erneut laden.
Arrays erstellen
Während die meisten Bash-Benutzer Variablen als einfache Verbindung zwischen einem Datenelement und einem Label betrachten, ist es auch möglich, sie als Marker für Arrays zu verwenden. Dies sind eine Art von Datenstruktur, die mehrere Werte in einem nummerierten Indexformat speichern kann. Um ein Array zu erstellen, befolgen Sie die folgenden Schritte:
- Erstellen Sie ein leeres Shell-Skript:
nano array.sh- Verwenden Sie den
declare-Unterbefehl, um das Bash-Array im aktuellen Shell-Prozess zu initialisieren.
declare-a myarray
- Füllen Sie Ihr neues Array, indem Sie den integrierten Bash-Zuweisungsoperator verwenden. Zum Beispiel erstellt die folgende Codezeile ein Array mit fünf Elementen:
myarray=([0]=hello [1]=maketecheasier [2]=its [3]=an [4]=array)
- Testen Sie, ob Ihr neues Array funktioniert, indem Sie den
echo-Befehl verwenden, um Daten daraus abzurufen:
echo${myarray[1]}
Sie können auch den Inhalt eines Arrays streamen, indem Sie den „*“-Operator verwenden:
echo${myarray[*]}
Ausführen von Subshell-Variablen
Eine der größten Funktionen von Bash ist die Fähigkeit, Subshells zu erstellen, in denen Programme wie grundlegende Funktionen ausgeführt werden können. Zum Beispiel wird das Schreiben von ls -a in einem Shell-Skript und das Ausführen immer noch den Inhalt des aktuellen Arbeitsverzeichnisses drucken.

Obwohl dies einschränkend erscheinen mag, erweitert Bash dies, indem es Ihnen ermöglicht, die Ausgabe dieser Programme in Variablen zu speichern. Dies ermöglicht es Ihnen, sie als Eingabe für andere Programme innerhalb Ihres Skripts zu verwenden.
- Um Subshell-Variablen zu verwenden, erstellen Sie zuerst ein leeres Shell-Skript:
nano subshell.sh- Schreiben Sie den folgenden Boilerplate-Code in Ihr neues Shell-Skript:
#!/bin/bash
mysubshell=$(x)
echo"Die Ausgabe der Variablen ist $mysubshell"- Ersetzen Sie das „x“ durch den Befehl, den Sie ausführen und dessen Ausgabe speichern möchten. Zum Beispiel wird das Folgende den Inhalt der Datei world.txt abrufen und das Wort „world“ durch „maketecheasier“ ersetzen.
mysubshell=$(sed s/world/maketecheasier/g world.txt)
- Testen Sie Ihre neue Subshell-Variable, indem Sie Ihr neues Skript ausführen:
chmod u+x ./subshell.sh
bash ./subshell.sh
FYI: Neben Variablen sind dies die speziellen Zeichen, die Sie in Bash kennen sollten.
Teilstring-Manipulation
Neben dem Speichern und Abrufen von Daten können Sie auch den Inhalt von Variablen ändern. Bash hat eine Reihe von Operatoren, die Sie am Ende jeder Variablen anhängen können, mit denen Sie Ihre Skripte verfeinern können, ohne zusätzliche Programme aufzurufen.
- Erstellen Sie ein leeres Shell-Skript:
nano substring.sh- Schreiben Sie den folgenden Boilerplate-Code in Ihr leeres Skript:
#!/bin/bash
mysubstring=hello.txt.old
echo"Mein Dateiname ist: ${mysubstring}"- Die grundlegende Teilstring-Manipulation erfolgt in drei Formen. Zuerst akzeptiert das „#“-Zeichen ein Regex-Muster, das die Shell am Anfang der Variablen entfernen wird:
#!/bin/bash
mysubstring=hello.txt.old
echo"Mein Dateiname ist: ${mysubstring#*.}"
- Zweitens akzeptiert das „%“-Zeichen ebenfalls ein Regex-Muster, das die Shell am Ende der Variablen entfernen wird:
#!/bin/bash
mysubstring=hello.txt.old
echo"Mein Dateiname ist: ${mysubstring%.*}"
- Bash bietet auch eine Möglichkeit, den Inhalt einer Variablen selektiv zu ändern. Ähnlich wie das
sed-Programm können Sie das „/“-Zeichen verwenden, um einen beliebigen String innerhalb einer Variablen zu finden und zu ersetzen:
#!/bin/bash
mysubstring=hello.txt
echo"Mein Dateiname ist: ${mysubstring/hello/maketecheasier}"
Gut zu wissen: Reguläre Ausdrücke sind ein wichtiges Werkzeug im Toolkit jedes Linux-Benutzers. Lernen Sie, wie Sie es effektiv durch unser leicht verständliches Cheatsheet verwenden können.
Häufig gestellte Fragen
Ist es möglich, ein Shell-Skript innerhalb einer Variablen auszuführen?
Ja, indem Sie den vollständigen Pfad des Skripts, das Sie ausführen möchten, schreiben. Zum Beispiel wird das Ausführen von $(/home/ramces/.scripts/sample.sh) eine Bash-Subshell erstellen und das Skript „sample.sh“ aus meinem Home-Verzeichnis ausführen.
Können Sie eine Variable entfernen, während ein Skript läuft?
Ja. Sie können eine Variable aus einem laufenden Shell-Prozess entfernen, indem Sie den unset-Unterbefehl gefolgt vom Namen der Variable in Ihrem Skript einfügen. Es ist wichtig zu beachten, dass das Ausführen dieses Befehls keine Variablen entfernt, die außerhalb des aktuellen Shell-Prozesses ausgeführt werden.
Können Sie eine permanente Variable in einem externen Shell-Skript verwenden?
Ja. Es ist möglich, auf den Wert einer Variable zu verweisen, die außerhalb des aktuellen Shell-Prozesses deklariert wurde. Sie müssen jedoch auch vorsichtig sein, wenn Sie externe Variablen verwenden, da es leicht ist, sie vorübergehend zu überschreiben.
Bildnachweis: Unsplash. Alle Änderungen und Screenshots von Ramces Red.