Variable
Eine Variable in der Programmierung ist im allgemeinsten Sinne einfach ein Behälter für Rechnungsgrössen ("Werte"), die im Verlauf eines Rechenprozesses auftreten. Im Normalfall wird eine Variable durch einen Namen bezeichnet und hat eine bestimmte Adresse im Arbeitspeicher des Rechners. Manchmal ist es sinnvoll, drei Arten von Variablen zu unterscheiden:
- Eine Eingabevariable erhält Werte, die von aussen ins Programm eingegeben werden,
- Eine Ausgabevariable enthält später die Ergebnisse der Rechnung und
- Eine Hilfsvariable nimmt Werte auf, die im Verlauf der Rechnung benötigt werden.
Diese Unterscheidung ist jedoch rein konzeptuell, die modernen Programmiersprachen nehmen darauf keine Rücksicht.
Syntax
Das Setzen einer Variable erfolgt nach folgender Syntax.
variable=wert
Vor und nach dem Gleichheitszeichen darf kein Leerzeichen stehen. Gross- und Kleinschreibung werden beachtet. Der Name einer Variablen darf Gross- und Kleinbuchstaben sowie Unterstriche und Zahlen enthalten, darf jedoch nicht mit einer Zahl beginnen. Enthält der Wert eienr Variablen Leer- oder Sonderzeichen, so muss der gesamte Wert in Hochkommas eingeschlossen werden.
Die Ausgabe von Variableninhalten geschieht nach folgender Syntax.
echo $variable
Die Shell kümmert sich erst um die Variablensubstitution, also um die Ersetzung der Variablen der Eingabezeile durch deren Inhalte und führt erst dann die entsprechenden Befehle aus. Diese bekommen deshalb die Variablennamen selbst nicht zu sehen, sondern nur die von der Shell eingesetzten Variablenwerte. Dieser Zwischenschritt kann z. B. zum Zwecke der Fehlersuche mit dem Befehl "set -x" angezeigt und mit "set +x" wieder aufgehoben werden.
Aus einer Shell heraus werden häufig weitere Shells gestartet, sogenannte "Subshells". Dies kann auf verschiedene Art und Weise geschehen:
- ausdrücklich durch den Aufruf eines Shell-Programms (z. b. "/bin/bash")
- durch das Öffnen eines xterm-Fensters im X Window System
- durch das Starten von Programmen
Shellvariablen sind als lokale Variablen immer nur ausdrücklich in dieser einen Shell gültig. Wird eine Subshell beendet, landet der Benutzer wieder in der "parent shell", in der die Shellvariablen gültig sind, die auch vor dem Aufruf der nun beendeten Subshell bereits gültig waren. Damit eine lokale Shellvariable auch in einer Subshell Gültigkeit besitzt und damit zur Umgebungsvariable wird, muss sie mit dem Befehl export exportiert werden.
export VARIABLE=wert
Wird rechts des Gleichheitszeichens kein Wert angegeben, wird der Variable ein sogenannter null string (also eine leere Zeichenkette) zugewiesen. Mit folgendem Befehl wird eine Variable vollständig aus dem Arbeitsspeicher gelöscht.
unset variable
Die Gültigkeitsdauer von Variablen ist immer auf die aktuelle Shell beschränkt. Sollen Shell- oder Umgebungsvariablen dauerhaft definiert werden, sind diese in einer Startdatei, die beim Anmelden des Benutzers ausgeführt wird, zu bestimmen.
Rechnen
Mit Integervariablen kann auch gerechnet werden.
declare -i variable=0
Der Wert der Variablen kann, muss aber nicht initial festgelegt werden. Die einfache Addition ( + ), Subtraktion ( - ) , Multiplikation ( * ), Division ( / ) und Division mit Rest ( % ) sind direkt implementiert. Folgende Zuweisung berechnet den Ausdruck der Division der Variablen "X" durch die Variable "Y" und legt das Ergebnis in der Variable "Z" ab.
Z=$X/$Y
Vorbelegung
Innerhalb eines Skripts kann eine Variable auch mit einer Vorbelegung versehen werden.
#!/bin/bash read -p "Eingabe " INPUT INPUT=${INPUT:-Vorbelegung} echo "Eingabe: ${INPUT}"
Verwendung
Setzen der (lokalen) Variable "vorname" mit dem Wert "Michi". Die Variable gilt damit für die aktuelle Shell.
$ vorname=Michi oder $ declare vorname=Michi oder (zur Verwendung in Funktionen) $ local vorname=Michi
Exportieren der Umgebungsvariable "VORNAME" mit dem Wert "Michi". Die Variable gilt damit für die aktuelle Shell und alle ihre Subshells.
$ export VORNAME=Michi oder $ VORNAME=Michi; export vorname oder $ declare -x VORNAME=Michi
Ausgabe aller Umgebungsvariablen der aktuellen Shell.
$ env oder $ printenv
Ausgabe aller Umgebungsvariablen.
$ export
Ausgabe aller definierten Variablen der aktuellen Shell (also sowohl der lokalen Variablen wie der Umgebungsvariablen).
$ set
Beispiele
Starten des Webbrowsers Firefox in Englisch, auch wenn die Arbeitsumgebung sonst Deutsch spricht.
$ LANG=en_GB firefox
...
$ ux="chmod u+x" $ $ux hallo
...
$ x=ho $ ec$x Live long Live long
...
$ x=topf $ echo Blumen${x}erde Blumentopferde $ touch ${x}datei
Belegen der Variable "neu" mit den direkt aneinandergehängten Werten der Variablen "$alt1" und "$alt2".
$ neu=$alt1$alt2
Belegen der Variable "neu" mit dem Wert der Variablen "alt", wobei die Zeichenkette ".for" rechts weggeschnitten wird.
$ neu=${alt%.for}
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | ger | Variable (Programmierung)wbm | Enzyklopädischer Artikel |