Was sind Bash-Variablen und wie können Sie sie verwenden?
Mit Bash können Sie ganze Textzeichenfolgen einzelnen Variablen zuordnen und so die Verwendung und das Schreiben von Skripten vereinfachen. Wie funktionieren sie und wie können Sie sie nutzen? Lass es uns herausfinden.
Was ist eine Bash-Variable?
Variablen sind leicht zu merkende Namen, die unterschiedliche alphanumerische Werte enthalten können. Sie sind nützlich, da sie die Anwendung derselben Funktion auf verschiedene Werte ermöglichen, ohne dass ein Skript/Code neu geschrieben werden muss. Sie erleichtern auch das Schreiben des Skripts/Codeteils, da Sie für alle Werte denselben Namen verwenden können, anstatt sich mit einzelnen Werten zu befassen.
Echtzeitvariablen
Bash ermöglicht die Verwendung von Variablen. Sie können Variablen im laufenden Betrieb erstellen und sie während Ihrer aktuellen Bash-Sitzung wiederverwenden. Sie können Ihnen bei der Verwendung von Bash auf vielfältige Weise helfen und verschwinden nach Ende der aktuellen Sitzung.
Nehmen wir zum Beispiel an, Sie besuchen eine Reihe von Websites. Sie könnten Recherchen durchführen oder Daten durchsuchen und die folgende Variable erstellen:
sitea=https://www.maketecheasier.com
Wenn Sie danach unsere Seite mit Firefox besuchen möchten, können Sie einfach Folgendes eingeben:
firefox $sitea
Viel einfacher – und besser lesbar. Die $sitea
Variable bleibt der Site zugeordnet, bis Sie entweder ihren Inhalt manuell ändern oder die Bash-Sitzung beendet wird. Und natürlich können Sie weitere Variablen erstellen, z. B. siteb
, sitec
und sited
.
Beim Einrichten neuer Variablen können Sie beliebige Namen verwenden und beliebige alphanumerische Zeichenfolgen darin speichern. Beachten Sie jedoch, dass die Groß-/Kleinschreibung standardmäßig beachtet wird. $sitea
Wäre also nicht dasselbe wie $SiteA
. Beachten Sie außerdem, dass Sie beim Speichern von Zeichenfolgen mit Sonderzeichen (einschließlich Leerzeichen) Anführungszeichen verwenden sollten.
Variablen in Skripten
Variablen in Bash sind beim Schreiben von Skripten nützlicher, da sie es Ihnen ermöglichen, ein einzelnes Skript zu schreiben, das dann verschiedene Zeichenfolgen durchlaufen oder auf benutzerdefinierte Datenteile reagieren kann. Nehmen wir an, Sie schreiben ein Skript, das jeder auf seinem Computer verwenden kann, 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 behalten Sie das Skript bei und ändern nur den Namen des Benutzers.
Ein solches Skript würde etwa wie folgt aussehen:
#!/bin/bash
username=Ramces
echo $username
Das obige Beispiel mag überflüssig erscheinen; Mit zunehmender Komplexität des Codes werden Variablen jedoch unverzichtbar. Ein Skript kann Hunderte oder Tausende 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 Hello $username. This is a simple script I wrote that will repeat your name - that is, $username - often as an actual example of how to use Bash variables. I hope it will make it easier to understand how to use variables to improve your Bash workflow, $username. In this case, the variable username is mapped to your name. Whenever Bash runs into it, it replaces it with $username.
Das obige Skript verwendet den als username
Variable definierten Namen, um den Text zu vervollständigen. Wenn Sie den Namen des tatsächlichen Benutzers verwenden, müssen Sie ihn viermal eingeben, dann dasselbe für den nächsten Benutzer und noch einmal viermal für den nächsten tun. Wieder und 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.
Permanente Bash-Variablen und Aliase
Wir haben gesehen, wie Sie Variablen vorübergehend festlegen und wie Sie sie dauerhaft in Ihre eigenen Skripte einbinden können. Sie können Variablen in Bash auch dauerhaft festlegen, indem Sie die Datei „~/.bashrc“ bearbeiten.
- Öffnen Sie die Datei „~/.bashrc“ in Ihrem bevorzugten Texteditor.
nano ~/.bashrc
- Wir empfehlen Ihnen, mit einem Testlauf zu beginnen und nur eine einzige Variable hinzuzufügen, damit Sie wissen, wo Sie suchen müssen, wenn der Vorgang 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 verlassen Sie den Editor. Die Änderungen werden nicht sofort angewendet. Geben Sie Folgendes in Ihr Terminal ein, damit es wirksam wird:
source ~/.bashrc
- Nutzen Sie die neu festgelegte Variable in Ihrer Bash-Sitzung:
echo $myname
Sie können so viele Variablen einrichten, wie Sie möchten, und Ihre täglichen Abenteuer in Bash erheblich vereinfachen.
Für einen zusätzlichen Produktivitätsschub lohnt es sich auch, einen anderen Variablentyp einzurichten: Aliase. Im Gegensatz zu typischen Variablen, die Daten zugeordnet sind, die Sie in Befehlen verwenden können, werden Aliase anstelle tatsächlicher Befehle verwendet.
So wie Sie eine einfach zu merkende Variable verwenden können, um lange Textzeichenfolgen zu speichern, können Sie Aliase als einfache Alternative zu komplexen Befehlen verwenden.
Selbst wenn Sie eine Variable in.bashrc dauerhaft festgelegt haben, können Sie ihr schließlich vorübergehend einen anderen Wert zuweisen, wie wir zuvor gesehen haben. Die Variable stellt den neuen Inhalt dar, bis die aktuelle Bash-Sitzung endet (nach dem Abmelden oder Neustarten) oder Sie ihn neu belegen. bashrc- Datei.
Arrays erstellen
Während die meisten Bash-Benutzer Variablen als einfache Verknüpfung zwischen einem Datenelement und einer Beschriftung betrachten, ist es auch möglich, sie als Markierung für Arrays zu verwenden. Hierbei handelt es sich um eine Art Datenstruktur, die mehrere Werte in einem nummerierten Indexformat speichern kann. Um ein Array zu erstellen, führen Sie die folgenden Schritte aus:
- 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 mit dem integrierten Bash-Zuweisungsoperator. Die folgende Codezeile erstellt beispielsweise ein Array mit fünf darin enthaltenen 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 den Inhalt eines Arrays auch streamen, indem Sie den „*“-Operator verwenden:
echo ${myarray[*]}
Ausführen von Subshell-Variablen
Eines der größten Features von Bash ist seine Fähigkeit, Subshells zu erstellen, in denen Programme so ausgeführt werden können, als wären sie Grundfunktionen. Wenn Sie beispielsweise ls -a
ein Shell-Skript schreiben und ausführen, wird weiterhin der Inhalt des aktuellen Arbeitsverzeichnisses gedruckt.
Auch wenn dies einschränkend wirken mag, erweitert Bash dies, indem es Ihnen ermöglicht, die Ausgabe dieser Programme in Variablen zu speichern. Dadurch können Sie sie als Eingabe für andere Programme in Ihrem Skript verwenden.
- Um Subshell-Variablen zu verwenden, erstellen Sie zunächst ein leeres Shell-Skript:
nano subshell.sh
- Schreiben Sie den folgenden Mustercode in Ihr neues Shell-Skript:
#!/bin/bash
mysubshell=$(x)echo "The output of the variable is $mysubshell"
- Ersetzen Sie das „x“ durch den Befehl, den Sie ausführen und die Ausgabe speichern möchten. Im Folgenden wird beispielsweise der Inhalt der Datei world.txt abgerufen und das Wort „world“ durch „maketecheasier“ ersetzt.
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
Teilstring-Manipulation
Neben dem Speichern und Abrufen von Daten können Sie auch den Inhalt von Variablen ändern. Bash verfügt über eine Reihe von Operatoren, die Sie am Ende jeder Variablen anhängen können, sodass Sie Ihre Skripte verfeinern können, ohne zusätzliche Programme aufzurufen.
- Erstellen Sie ein leeres Shell-Skript:
nano substring.sh
- Schreiben Sie den folgenden Standardcode in Ihr leeres Skript:
#!/bin/bash
mysubstring=hello.txt.old
echo "My filename is: ${mysubstring}"
- Die grundlegende Manipulation von Teilzeichenfolgen gibt es in drei Formen. Erstens akzeptiert das Zeichen „#“ ein Regex-Muster, das die Shell am Anfang der Variablen entfernt:
#!/bin/bash
mysubstring=hello.txt.old
echo "My filename is: ${mysubstring#*.}"
- Zweitens akzeptiert das Zeichen „%“ auch ein Regex-Muster, das die Shell am Ende der Variablen entfernt:
#!/bin/bash
mysubstring=hello.txt.old
echo "My filename is: ${mysubstring%.*}"
- Bash bietet auch eine Möglichkeit, den Inhalt einer Variablen selektiv zu ändern. Ähnlich wie im
sed
Programm können Sie das Zeichen „/“ verwenden, um eine beliebige Zeichenfolge innerhalb einer Variablen zu suchen und zu ersetzen:
#!/bin/bash
mysubstring=hello.txt
echo "My filename is: ${mysubstring/hello/maketecheasier}"
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 schreiben, das Sie ausführen möchten. Wenn Sie beispielsweise ausführen, $(/home/ramces/.scripts/sample.sh)
wird eine Bash-Subshell erstellt und das Skript „sample.sh“ aus meinem Home-Verzeichnis ausgeführt.
Können Sie eine Variable entfernen, während ein Skript ausgeführt wird?
Ja. unset
Sie können eine Variable aus einem laufenden Shell-Prozess entfernen, indem Sie den Unterbefehl gefolgt vom Namen der Variablen in Ihr Skript einfügen . Es ist wichtig zu beachten, dass durch die Ausführung dieses Befehls keine Variablen entfernt werden, 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 Variablen zu verweisen, die außerhalb des aktuellen Shell-Prozesses deklariert wurde. Allerdings müssen Sie auch bei der Verwendung externer Variablen vorsichtig sein, da diese leicht vorübergehend überschrieben werden können.
Bildnachweis: Unsplash . Alle Änderungen und Screenshots von Ramces Red.
Schreibe einen Kommentar