Bash Grundkurs #2: Verwendung von Variablen in Bash

Willkommen zum zweiten Artikel unserer technischen Wiki-Serie über Linux und Bash-Programmierung!

Nachdem wir in unserem ersten Beitrag die Grundlagen des Erstellens und Ausführens von Bash-Skripten kennengelernt haben, widmen wir uns heute einem zentralen Konzept der Bash-Programmierung: der Verwendung von Variablen. Variablen sind unverzichtbare Bausteine für jedes Skript und ermöglichen es dir, Daten zu speichern, zu manipulieren und wiederzuverwenden.

Was sind Variablen in Bash?

Variablen in Bash sind äußerst vielseitig und können verschiedene Arten von Daten speichern, von einfachen Zeichenketten bis hin zu komplexen Datenstrukturen. Im Gegensatz zu vielen anderen Programmiersprachen müssen Variablen in Bash nicht explizit deklariert oder typisiert werden. Dies macht die Arbeit mit ihnen einerseits sehr flexibel, erfordert andererseits aber auch besondere Sorgfalt bei ihrer Verwendung.

In diesem Artikel werden wir uns eingehend mit der Deklaration, Zuweisung und Verwendung von Variablen in Bash beschäftigen. Wir werden verschiedene Arten von Variablen kennenlernen, darunter lokale und globale Variablen, Umgebungsvariablen und spezielle Bash-Variablen. Zudem werden wir uns ansehen, wie man Variablen in verschiedenen Kontexten wie Funktionen, Schleifen und bedingten Anweisungen einsetzt.

Grundlagen

Variablen deklarieren und zuweisen

In Bash ist die Deklaration und Zuweisung von Variablen denkbar einfach. Du verwendest einfach den Variablennamen, gefolgt von einem Gleichheitszeichen und dem Wert:

Bash
mein_name="Max Mustermann"
alter=30
pi=3.14159
Wichtig: Beachte, dass zwischen dem Variablennamen, dem Gleichheitszeichen und dem Wert keine Leerzeichen stehen dürfen. Andernfalls interpretiert Bash dies als Befehl mit Argumenten.
Auf Variablen zugreifen

Um auf den Wert einer Variable zuzugreifen, verwendest du das Dollarzeichen ($) vor dem Variablennamen:

Bash
echo $mein_name
echo "Ich bin $alter Jahre alt."

Für eine bessere Lesbarkeit und um Mehrdeutigkeiten zu vermeiden, kannst du den Variablennamen auch in geschweifte Klammern setzen:

Bash
echo "Der Wert von Pi ist ${pi}."
Variablen in Anführungszeichen

Bei der Verwendung von Variablen in Anführungszeichen gibt es einen wichtigen Unterschied zu beachten:

Doppelte Anführungszeichen (") erlauben die Variablensubstitution:

Bash
echo "Mein Name ist $mein_name"

Einfache Anführungszeichen (') verhindern die Variablensubstitution:

Bash
echo 'Mein Name ist $mein_name'

Arten von Variablen

Lokale Variablen

Lokale Variablen sind nur innerhalb eines bestimmten Bereichs, typischerweise einer Funktion, gültig. Sie werden mit dem Schlüsselwort local deklariert:

Bash
function gruss() {
    local grusskarte="Hallo, $1!"
    echo $grusskarte
}

gruss "Welt"
echo $grusskarte  # Dies wird einen leeren Wert ausgeben
Globale Variablen

Globale Variablen sind im gesamten Skript verfügbar. Alle Variablen, die außerhalb von Funktionen deklariert werden, sind standardmäßig global:

Bash
global_var="Ich bin überall sichtbar"

function test_funktion() {
    echo $global_var
}

test_funktion  # Gibt "Ich bin überall sichtbar" aus

Umgebungsvariablen

Umgebungsvariablen sind spezielle Variablen, die von der Shell oder dem Betriebssystem gesetzt werden. Du kannst sie mit dem Befehl export erstellen oder ändern:

Bash
export MEINE_UMGEBUNGSVARIABLE="Wichtiger Wert"

Diese Variablen sind auch für Kindprozesse sichtbar, die von deinem Skript gestartet werden.

Spezielle Bash-Variablen

Bash stellt eine Reihe von speziellen Variablen zur Verfügung, die nützliche Informationen enthalten:

  • $0: Der Name des Skripts
  • $1$2, …: Die Positionsparameter (Argumente) des Skripts
  • $#: Die Anzahl der übergebenen Argumente
  • $@: Alle Argumente als separate Wörter
  • $$: Die Prozess-ID des aktuellen Skripts
  • $?: Der Exit-Status des zuletzt ausgeführten Befehls

Hier ein Beispiel zur Verwendung einiger dieser speziellen Variablen:

Bash
#!/bin/bash

echo "Skriptname: $0"
echo "Erstes Argument: $1"
echo "Zweites Argument: $2"
echo "Anzahl der Argumente: $#"
echo "Alle Argumente: $@"

Variablen in verschiedenen Kontexten

Variablen in Funktionen

Funktionen können Variablen als Parameter erhalten und lokale Variablen definieren:

Bash
function berechne_summe() {
    local a=$1
    local b=$2
    local summe=$((a + b))
    echo $summe
}

ergebnis=$(berechne_summe 5 3)
echo "Die Summe ist: $ergebnis"
Variablen in Schleifen

Variablen sind besonders nützlich in Schleifen, um Zähler oder temporäre Werte zu speichern:

Bash
for i in {1..5}; do
    echo "Durchlauf $i"
done

counter=0
while [ $counter -lt 5 ]; do
    echo "Zähler: $counter"
    counter=$((counter + 1))
done
Variablen in bedingten Anweisungen

In bedingten Anweisungen können Variablen für Vergleiche und Entscheidungen verwendet werden:

Bash
alter=18

if [ $alter -ge 18 ]; then
    echo "Du bist volljährig."
else
    echo "Du bist minderjährig."
fi

Übung

Um dein Verständnis für die Verwendung von Variablen in Bash zu vertiefen, hier eine Übungsaufgabe:

Erstelle ein Bash-Skript, das:

  1. Den Benutzer nach seinem Namen fragt und diesen in einer Variable speichert.
  2. Das aktuelle Datum in einer Variable speichert.
  3. Eine Funktion definiert, die eine personalisierte Begrüßung ausgibt, einschließlich des Namens und des Datums.
  4. Die Anzahl der Buchstaben im Namen zählt und ausgibt.
  5. Überprüft, ob der Name länger als 5 Buchstaben ist, und eine entsprechende Meldung ausgibt.

Hier ist eine mögliche Lösung:

Bash
#!/bin/bash

# 1. Frage nach dem Namen
echo "Wie heißt du?"
read benutzername

# 2. Speichere das aktuelle Datum
aktuelles_datum=$(date +"%d.%m.%Y")

# 3. Definiere eine Begrüßungsfunktion
function begruessung() {
    local name=$1
    local datum=$2
    echo "Hallo $name! Heute ist der $datum."
}

# Rufe die Begrüßungsfunktion auf
begruessung "$benutzername" "$aktuelles_datum"

# 4. Zähle die Buchstaben im Namen
namenslaenge=${#benutzername}
echo "Dein Name hat $namenslaenge Buchstaben."

# 5. Überprüfe die Namenslänge
if [ $namenslaenge -gt 5 ]; then
    echo "Dein Name ist länger als 5 Buchstaben."
else
    echo "Dein Name hat 5 oder weniger Buchstaben."
fi

Dieses Skript demonstriert die Verwendung von Benutzereingaben, Datums-Funktionen, benutzerdefinierten Funktionen, String-Längenberechnung und bedingten Anweisungen – alles unter Verwendung von Variablen.

Fazit

Variablen sind ein grundlegender Baustein in der Bash-Programmierung. Sie ermöglichen es dir, Daten zu speichern, zu manipulieren und wiederzuverwenden, was deine Skripte dynamischer und flexibler macht. In diesem Artikel haben wir gelernt, wie man Variablen deklariert, zuweist und in verschiedenen Kontexten verwendet. Wir haben auch verschiedene Arten von Variablen kennengelernt, einschließlich lokaler und globaler Variablen, Umgebungsvariablen und spezieller Bash-Variablen.

Die effektive Nutzung von Variablen kann deine Bash-Skripte erheblich verbessern, indem sie sie lesbarer, wartbarer und leistungsfähiger machen. Mit zunehmendem Verständnis für Variablen wirst du in der Lage sein, komplexere und nützlichere Skripte zu schreiben.

In unserem nächsten Artikel werden wir uns mit Kontrollstrukturen in Bash befassen, einschließlich if-Anweisungen, Schleifen und case-Statements. Diese Konzepte bauen auf deinem Wissen über Variablen auf und ermöglichen es dir, noch ausgefeiltere Skripte zu erstellen.

Bleib dran und happy scripting!

Kommentar verfassen