|
Shell-Variable
Allgemeines
Variable sind frei wählbare Bezeichner (Namen), die beliebige Zeichenketten aufnehmen können. Bestehen die Zeichenketten nur aus Ziffern, werden die vonbestimmten Kommandos als Integer-Zahlen interpretiert (z. B. expr).Bei Variablen der Shell sind einige Besonderheiten gegenüber anderen Programmiersprachen zu beachten. Im Umgang mit Variablen lassensich grundlegend drei Formen unterscheiden:- Variablendeklaration
- Wertzuweisung
- Wertreferenzierung
Beispiele zur Verdeutlichung des Sachverhaltes:
Form |
Beispiel |
Ausgabe |
Deklaration |
$ foo= |
|
Wertzuweisung |
$ foo=bar |
|
Wertreferenzierung |
$ echo $foo |
bar |
Im Allgemeinen werden Variablen in der Shell nicht explizit deklariert. Vielmehr
ist der Wertzuweisung die Variablendeklaration implizit enthalten.
Wird eine Variable dennoch ohne Wertzuweisung deklariert, so wird bei der
Wertreferenzierung ein leerer String ("") zurückgegeben.
Für Variablen gilt allgemein:
- Variable sind frei wählbare Bezeichner (Namen), die mit einem Buchstaben
beginnen und bis zu 200 Zeichen lang sein dürfen. Leerzeichen innerhalb von
Variablen sind (normalerweise) nicht erlaubt (und schlechter Stil).
- Ist der Wert, d. h. der Inhalt einer Variablen gemeint, wird ein $-Zeichen vor
den Namen gestellt (siehe oben).
- Mittels spezieller Funktionen kann eine Variable auch numerisch oder logisch
interpretiert werden.
- Shell-Skripten dürfen ihrerseits wieder Shell-Skripten oder Programme
aufrufen. Dabei muß die Vererbung einer Variablen ausdrücklich festgelegt
werden (--> Exportieren durch den export-Befehl), sonst kann eine andere
Shell - oder ein beliebiges anderes Programm - nicht darauf zugreifen.
- Jede Subshell läuft in einer eigenen Umgebung, d. h. Variablendefinitionen
(und die Wirkung verschiedener Kommandos) in der Subshell sind nach deren Beendigung
wieder "vergessen". Es ist nicht möglich, den Wert einer Variablen
aus einem Unterprogramm in die aufrufende Ebene zu übergeben.
- Die Zuweisung eines Wertes an die Variable erfolgt mittels des Gleichheitszeichens:
VAR=Wert |
Wert ist ein String (ohne Leerzeichen und Sonderzeichen) |
VAR="Wert" |
Wert ist ein String (Ersetzung eingeschränkt, Leerzeichen und Sonderzeichen
dürfen enthalten sein) |
VAR=`kommando` VAR=$(kommando) |
Wert der Variablen ist die Ausgabe des Kommandos (Newline --> Leerzeichen) |
- Es hat sich die Konvention eingebürgert, Variablen zur Unterscheidung von
Kommados groß zu schreiben.
- Soll der Wert der Variablen mit einem String konkateniert werden, ist der Name
in geschweifte Klammern einzuschließen - damit die Shell erkennen kann, wo
der Variablenname endet. Bei der Zuweisung von Zahlen an Shell-Variable werden
führende Leerzeichen und führende Nullen ignoriert.
Beispiele:
Kommando-Eingaben beginnen mit "$ ".
$ VAR="Hello World!"
$ echo $VAR
Hello World!
$ echo '$VAR'
$VAR
$ VAR=`pwd`
$ echo "Aktuelles Verzeichnis: $VAR"
Aktuelles Verzeichnis: /home/plate
$ VAR=`pwd`
$ echo ${VAR}/bin
/home/plate/bin
$ VAR=/usr/tmp/mytmp
$ ls > $VAR
Das letzte Beispiel schreibt die Ausgabe von ls in die Datei /usr/tmp/mytmp
Enthält eine Variable ein Kommando, so kann dies Kommando durch
Angabe der Variablen ausgeführt werden, z. B.:
$ VAR="ls -la"
$ $VAR
|
|
|