Variablen
In der Linux-Shell sind Variablen Speicherorte, die Daten enthalten können, die von Skripten, Programmen oder Benutzern verwendet werden. Sie sind wesentliche Werkzeuge zur Steuerung von Skripten und der Konfiguration der Umgebung. Lokale Variablen sind innerhalb der aktuellen Shell-Instanz sichtbar und temporär, während Umgebungsvariablen globaler Natur sind und in untergeordnete Prozesse vererbt werden können. Die richtige Handhabung dieser Variablen ist entscheidend für die effektive Nutzung von Shell-Skripten und das Arbeiten in der Linux-Umgebung.
Es gibt zwei Hauptarten von Variablen in einer Shell.
- Lokale Variablen
- Umgebungsvariablen
Diese beiden Arten von Variablen spielen eine entscheidende Rolle bei der Ausführung von Skripten und der Konfiguration der Shell-Umgebung.
Lokale Variablen
Lokale Variablen sind Variablen, die innerhalb der aktuellen Shell-Instanz definiert und verwendet werden. Diese Variablen sind nur innerhalb der aktuellen Shell-Sitzung oder innerhalb des aktuellen Skripts sichtbar und existieren nur so lange, wie die Shell-Instanz aktiv ist.
mein_name="User"
echo "Mein Name ist $mein_name"
zahl=42
echo "Die Zahl ist $zahl"
Mein Name ist User
Die Zahl ist 42
Erklärung
mein_name="User"
: Erstellt eine lokale Variable mit dem Namenmein_name
und weist ihr den WertUser
zu.zahl=42
: Erstellt eine weitere lokale Variable mit dem Namen zahl und weist ihr den Wert42
zu.echo
: Mitecho
werden die Sätze ausgegeben, während die Variablen nach ihren Werten aufgelöst werden.
Lokale Variablen werden nicht an untergeordnete Prozesse oder andere Shell-Sitzungen weitergegeben.
Umgebungsvariablen
Umgebungsvariablen sind eine spezielle Art von Variablen, die in der gesamten Shell-Umgebung, einschließlich untergeordneter Prozesse, sichtbar sind. Sie werden häufig verwendet, um Informationen wie den Pfad zu Programmsuche (PATH), den Benutzernamen (USER) und andere Systemeinstellungen zu speichern.
export editor="vim"
echo "Der bevorzugte Editor ist $editor"
Der bevorzugte Editor ist vim
Erklärung
export editor="vim"
: Erstellt eine Umgebungsvariable mit dem Namen editor und weist ihr den Wert „vim“ zu.
Durch die Verwendung von export
wird die Variable in die Umgebung exportiert und steht somit auch in untergeordneten Prozessen zur Verfügung.
Arbeiten mit Variablen
Die Manipulation und Bearbeitung von Variablen in einer Linux-Shell ermöglicht es, Daten effizient zu verwalten und Skripte dynamisch zu gestalten.
Zuweisen von Werten
Um einer Variable in einer Shell einen Wert zuzuweisen, verwendet man das „=“ Zeichen. Wichtig ist, dass keine Leerzeichen zwischen dem Variablennamen, dem „=“ Zeichen und dem zugewiesenen Wert stehen.
var_one="Value one"
anzahl=10
pfad="/usr/local/bin"
summe=$((5 + 3))
Erklärung
var_one="Value one"
: Weist der Variablenvar_one
den String „Value one
“ als Wert zu.anzahl=10
: Weist der Variableanzahl
den Wert10
zu.pfad="/usr/local/bin"
: Weist der Variable pfad den Pfad “/usr/local/bin
” zu.summe=$((5 + 3))
: Berechnet die Summe der Zahlen 5 und 3 und weist das Ergebnis der Variable summe zu. (Doppelte Klammer beachten)
Zugriff auf Variablen
Um den Wert einer Variable zu verwenden oder auszugeben, setzt man ein $
vor den Namen der Variable.
echo $var_one
echo "Der Wert ist $var_one und die Zahl ist $anzahl"
Value one
Der Wert ist Value one und die Zahl ist 10
Mit echo
gibt man die Werte der Variablen aus. Bei Verwendung innerhalb eines String mit "" wird der Variablenwert aus der Variable ausgelesen.
Ändern des Wertes einer Variable
Man kann den Wert einer bestehenden Variable jederzeit ändern, indem man ihr einfach einen neuen Wert zuweist.
zahl=5
echo $zahl
zahl=10
echo $zahl
5
10
Variablen in Strings verwenden
Variablen können direkt in Zeichenketten verwendet werden. Zu beachten ist, dass man das doppelte Quoting ("") verwendet, da sonst die Variablen nicht aufgelöst, sondern direkt als String (Name der Variable) ausgegeben wird.
greeting="Hallo"
echo "$greeting Welt"
Hallo Welt
Im nächsten Beispiel sieht man die Verwendung mit einfachem Quoting. Hierbei wird $greeting
direkt als Text ausgegeben.
greeting="Hallo"
echo '$greeting Welt'
$greeting Welt
Ersetzen von Text in einer Variable
Die Shell bietet die Möglichkeit, bestimmte Teile des Inhalts einer Variable durch andere Zeichenfolgen zu ersetzen.
text="Hallo Welt"
echo ${text/Welt/WordPress}
Hallo WordPress
In diesem Beispiel wurde „Welt“ durch „WordPress“ ersetzt.
Im nächsten Beispiel werden bestimmte einzelne Zeichen in einem String ersetzt.
text="Hallo Welt"
echo ${text//l/L}
HaLLo WeLt
Im diesem Beispiel wurden alle „l“ durch ein „L“ ersetzt.
Länge von Variable
Man kann die Länge des Inhalts einer Variablen (d.h. die Anzahl der Zeichen) berechnen.
text="Hallo Welt"
length_of_var=${#text}
echo $length_of_var
10
Numerische Variablen
Shell-Variablen speichern standardmäßig alle Werte als Zeichenketten. Um mit numerischen Werten zu arbeiten, kann man für arithmetische Operationen spezielle Syntax (( ... ))
verwenden.
a=5
b=3
summe=$((a + b))
echo $summe
produkt=$((a * b))
echo $produkt
8
15
Auch kann man Werte erhöhen oder verringern, was meist in Schleifen nützlich sein kann.
a=5
b=3
a=$((a + 1))
echo $a
b=$((b - 1))
echo $b
6
2
Array Variablen
Shell-Variablen können auch Arrays sein, was es ermöglicht, mehrere Werte unter einem einzigen Variablennamen zu speichern.
fruits=("Apfel" "Banane" "Orange")
echo ${fruits[@]}
Apfel Banane Orange
Mit der Syntax ${my_array[@]}
können alle Elemente eines Arrays ausgegeben werden.
fruits=("Apfel" "Banane" "Orange")
echo ${fruits[1]}
echo ${fruits[2]}
Banane
Orange
Um Elemente per Index auszugeben, wird der Index (beginnend bei 0) in den eckigen Klammern nach dem Array-Namen angegeben.
Wenn man die Länge eines Arrays, also die Anzahl der Elemente in einem Array (Variable) ermitteln möchte, sollte „#“ und die Syntax zur Ausgabe von allen Elementen verwendet werden.
fruits=("Apfel" "Banane" "Orange")
echo ${#fruits[@]}
3