Was sind Bash-Variablen und wie können Sie sie verwenden?

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

Ein Terminal, das eine grundlegende Variablenzuweisung zeigt.

Wenn Sie danach unsere Seite mit Firefox besuchen möchten, können Sie einfach Folgendes eingeben:

firefox $sitea

Ein Terminal, das eine Variable als Argument für ein Programm anzeigt.

Viel einfacher – und besser lesbar. Die $siteaVariable 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, sitecund 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. $siteaWä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

Ein Terminal, das ein einfaches Variablenzuweisungsskript zeigt.

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.

Ein Terminal, das ein einfaches Skript mit mehreren Variablenersetzungen zeigt.

Das obige Skript verwendet den als usernameVariable 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"

Ein Terminal, das eine neue permanente Variable in der bashrc-Datei anzeigt.
  • 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 declareUnterbefehl, um das Bash-Array im aktuellen Shell-Prozess zu initialisieren.

declare -a myarray

Ein Terminal, das den Deklarationsschritt für ein Array zeigt.
  • 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)

Ein Terminal, das ein Basisarray mit 5 Elementen zeigt.
  • Testen Sie, ob Ihr neues Array funktioniert, indem Sie den echoBefehl verwenden, um Daten daraus abzurufen:

echo ${myarray[1]}

Ein Terminal, das das Array-Skript zeigt, das ein einzelnes Array-Element abruft.

Sie können den Inhalt eines Arrays auch streamen, indem Sie den „*“-Operator verwenden:

echo ${myarray[*]}

Ein Terminal, das das Array-Skript anzeigt, das das gesamte Array streamt.

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 -aein Shell-Skript schreiben und ausführen, wird weiterhin der Inhalt des aktuellen Arbeitsverzeichnisses gedruckt.

Ein Terminal, das eine einfache Befehls-Subshell zeigt.

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)

Ein Terminal, das eine einfache Subshell-Ausführung zeigt.
  • Testen Sie Ihre neue Subshell-Variable, indem Sie Ihr neues Skript ausführen:

chmod u+x. /subshell.sh
bash. /subshell.sh

Ein Terminal, das die Ausgabe des Subshell-Skripts anzeigt.

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#*.}"

Ein Terminal, das die grundlegende Manipulation von Präfix-Teilzeichenfolgen zeigt.
  • 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%.*}"

Ein Terminal, das die grundlegende Manipulation von Postfix-Teilzeichenfolgen zeigt.
  • Bash bietet auch eine Möglichkeit, den Inhalt einer Variablen selektiv zu ändern. Ähnlich wie im sedProgramm 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}"

Ein Terminal, das eine grundlegende Stream-Bearbeitungsfunktion für Teilzeichenfolgen zeigt.

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. unsetSie 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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert