Dieser Artikel ist Teil unserer laufenden Bash-Tutorial-Reihe. Wie jede andere Programmiersprache stellt auch Bash Variablen zur Verfügung.
Bash-Variablen bieten temporären Speicher für Informationen, die während der Lebensdauer des Programms benötigt werden.
Syntax:
VARNAME=VALUE
Hinweis: Bei der Variablenzuweisung darf um das „=“-Zeichen kein Leerzeichen stehen. Wenn Sie VAR=VALUE verwenden, sieht die Shell das „=“ als Symbol und behandelt den Befehl als Variablenzuweisung. Wenn Sie VAR =VALUE verwenden, nimmt die Shell an, dass VAR der Name eines Befehls sein muss und versucht, ihn auszuführen.
Shell kümmert sich nicht um den Typ der Variablen. Variablen können Zeichenketten, Ganzzahlen oder reelle Zahlen speichern.
Beispiel.1 Einfache Verwendung der Bash-Variablenzuweisung
Das folgende Skript erstellt eine Variable namens LIST und weist ihr den Wert „/var/opt/bin“ zu. Um auf die Variablen zuzugreifen, stellen Sie einfach dem Variablennamen ein $ voran, wodurch Sie den in dieser Variablen gespeicherten Wert erhalten.
$ cat sample.sh #!/bin/bash LIST="/var/opt/bin/" ls -l $LIST
Führen Sie das obige Skript aus, das /var/opt/bin im Langformat auflistet, wie unten gezeigt.
$ ./sample.sh total 8 drwxrwsr-x 2 bin bin 4096 Jan 29 06:43 softwares drwxr-sr-x 5 root bin 4096 Sep 2 2009 llist
Bash-Variablenbereich – lokal und global
In Bash müssen Variablen nicht deklariert werden. Wenn Sie jedoch auf die bisher nicht verwendete Variable zugreifen, erhalten Sie keine Warnung oder Fehlermeldung. Stattdessen wird ein leerer Wert angezeigt.
Beispiel 2. Leere Werte in Bash-Variablen
$ cat var1.sh #!/bin/sh echo "Variable value is: $VAR1" VAR1="GEEKSTUFF" echo "Variable value is: $VAR1" $ ./var1.sh Variable value is: Variable value is: GEEKSTUFF
Wie oben gezeigt, hat die Variable zunächst einen leeren Wert, nach der Zuweisung können Sie Ihre Werte abrufen. Der Befehl export wird verwendet, um Variablen aus einer interaktiven Shell zu exportieren. export zeigt die Auswirkung auf den Gültigkeitsbereich von Variablen.
Beispiel 3. Bash-Variablen ohne Export
Weisen Sie einer Variablen einen Wert in einer interaktiven Shell zu und versuchen Sie, in Ihrem Shell-Skript darauf zuzugreifen.
$ VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"
Führen Sie nun das obige Skript wie unten gezeigt aus.
$ ./var2.sh VAR2= VAR2=UNIX
Trotzdem erhalten Sie einen leeren Wert für die Variable VAR2. Die Shell speichert die Variable VAR2 mit dem LINUX nur in der aktuellen Shell. Während der Ausführung von var2.sh erzeugt es die Shell und führt das Skript aus. Die Variable VAR2 hat also nicht den Wert in der erzeugten Shell. Sie müssen die Variable exportieren, damit sie von einem anderen Programm geerbt werden kann – einschließlich eines Shell-Skripts, wie unten gezeigt.
Beispiel 4. Exportieren einer Bash-Variablen
$ export VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"
Führen Sie nun das obige Skript aus.
$ ./var2.sh VAR2=LINUX VAR2=UNIX $ $echo $VAR2 LINUX
Jetzt können Sie feststellen, dass nach Ausführung des Shell-Skripts var2.sh der Wert von VAR2 LINUX ist. Weil die Variablen nicht an Ihre interaktive Shell zurückgegeben werden, es sei denn, Sie führen das Skript in der aktuellen Shell aus.
Eine Bash-Variable deklarieren
Mit der Declare-Anweisung in Bash können wir den den Variablen zugewiesenen Wert begrenzen. Es schränkt die Eigenschaften von Variablen ein. Die Option in einer Declare-Anweisung wird verwendet, um den Typ einer Variablen zu bestimmen.
Syntax:
declare option variablename
- declare ist ein Schlüsselwort
- -Option könnte sein:
- -r schreibgeschützte Variable
- -i Integer-Variable
- -eine Array-Variable
- -f für Funktionen
- -x deklariert und exportiert über die Umgebung zu nachfolgenden Befehlen.
Beispiel 5. Deklaration einer Bash-Variablen mit der Deklaration
$ cat declar.sh #!/bin/bash declare -i intvar intvar=123 # Assigning integer value. echo $intvar intvar=12.3 #Trying to store string type value to an integer variable echo $intvar declare -r rovar=281 rovar=212 # Trying to change the readonly variable.
Aus der folgenden Ausführung können Sie die Fehlermeldung erkennen, wenn Sie einer Variablen ungültige Daten zuweisen.
$ ./declar.sh 123 t.sh: line 6: 12.3: syntax error: invalid arithmetic operator (error token is ".3") 123 t.sh: line 11: rovar: readonly variable
Globale Bash-Variablen
Globale Variablen werden auch als Umgebungsvariablen bezeichnet, die allen Shells zur Verfügung stehen. Der Befehl printenv wird verwendet, um alle Umgebungsvariablen anzuzeigen.
$ printenv SHELL=/bin/bash HISTSIZE=1000 SSH_TTY=/dev/pts/1 HOME=/root LOGNAME=root CVS_RSH=ssh
Lokale Bash-Variablen
Lokale Variablen sind nur innerhalb des Codeblocks sichtbar. local ist ein Schlüsselwort, das verwendet wird, um die lokalen Variablen zu deklarieren. In einer Funktion hat eine lokale Variable nur innerhalb dieses Funktionsblocks eine Bedeutung.
Beispiel 6. Globale und lokale Bash-Variablen
$ cat localvar.sh #!/bin/bash pprint() { local lvar="Local content" echo -e "Local variable value with in the function" echo $lvar gvar="Global content changed" echo -e "Global variable value with in the function" echo $gvar } gvar="Global content" echo -e "Global variable value before calling function" echo $gvar echo -e "Local variable value before calling function" echo $lvar pprint echo -e "Global variable value after calling function" echo $gvar echo -e "Local variable value after calling function" echo $lvar
Führen Sie das obige Skript aus,
$ sh t.sh Global variable value before calling function Global content Local variable value before calling function Local variable value with in the function Local content Global variable value with in the function Global content changed Global variable value after calling function Global content changed Local variable value after calling function
In der obigen Ausgabe haben lokale Variablen vor und nach dem Aufruf der Funktion nur einen leeren Wert. Sein Geltungsbereich liegt nur innerhalb der Funktion. Sie ist aus der Funktion verschwunden, wohingegen die globale Variable auch nach der Ausführung der Funktion den aktualisierten Wert hat.