Variable: Unterschied zwischen den Versionen

Aus Mikiwiki
Wechseln zu: Navigation, Suche
(Vorbelegung)
(Beispiele)
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 49: Zeile 49:
 
Innerhalb eines Skripts kann eine Variable auch mit einer Vorbelegung versehen werden.
 
Innerhalb eines Skripts kann eine Variable auch mit einer Vorbelegung versehen werden.
  
 +
$ <b>vi beispielskript</b>
 
  #!/bin/bash
 
  #!/bin/bash
 
  read -p "Eingabe: " INPUT
 
  read -p "Eingabe: " INPUT
 
  INPUT=${INPUT:-Vorbelegung}
 
  INPUT=${INPUT:-Vorbelegung}
 
  echo "Ausgabe: ${INPUT}"
 
  echo "Ausgabe: ${INPUT}"
 +
 +
$ <b>./beispielskript</b>
 +
Eingabe: <b>Irgendwas</b>
 +
Ausgabe: Irgendwas
 +
$ <b>./beispielskript</b>
 +
Eingabe:
 +
Ausgabe: Vorbelegung
  
 
== Verwendung ==
 
== Verwendung ==
Zeile 88: Zeile 96:
 
=== Beispiele ===
 
=== Beispiele ===
  
Starten des Webbrowsers Firefox in Englisch, auch wenn die Arbeitsumgebung sonst Deutsch spricht.
+
Starten des Webbrowsers Firefox in Englisch, auch wenn die Arbeitsumgebung sonst auf Deutsch eingestellt ist.
  
 
  $ <b>LANG=en_GB firefox</b>
 
  $ <b>LANG=en_GB firefox</b>
Zeile 117: Zeile 125:
  
 
  $ <b>neu=${alt%.for}</b>
 
  $ <b>neu=${alt%.for}</b>
 +
 +
...
 +
 +
$ <b>a=1 b=2 c=3</b>
 +
$ <b>for var in a b c
 +
    do
 +
    echo $var ${!var}
 +
    done</b>
 +
a 1
 +
b 2
 +
c 3
  
 
== Weblinks ==
 
== Weblinks ==

Aktuelle Version vom 2. Juni 2019, 17:55 Uhr

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.

$ vi beispielskript
#!/bin/bash
read -p "Eingabe: " INPUT
INPUT=${INPUT:-Vorbelegung}
echo "Ausgabe: ${INPUT}"

$ ./beispielskript
Eingabe: Irgendwas
Ausgabe: Irgendwas
$ ./beispielskript
Eingabe: 
Ausgabe: Vorbelegung

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 auf Deutsch eingestellt ist.

$ 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}

...

$ a=1 b=2 c=3
$ for var in a b c
    do
    echo $var ${!var}
    done
a 1
b 2
c 3

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
country DE.gif Wikipedia ger Variable (Programmierung)wbm Enzyklopädischer Artikel