20.5 Verwenden von Variablen in der Bash-Shell

Eine Shell-Variable kann global oder lokal sein. Auf globale Variablen, z. B. Umgebungsvariablen, kann in allen Shells zugegriffen werden. Lokale Variablen sind hingegen nur in der aktuellen Shell sichtbar.

Verwenden Sie zur Anzeige von allen Umgebungsvariablen das Kommando printenv. Wenn Sie den Wert einer Variable kennen müssen, fügen Sie den Namen Ihrer Variablen als ein Argument ein:

printenv PATH

Eine Variable (global oder lokal) kann mit echo angezeigt werden:

echo $PATH

Verwenden Sie zum Festlegen einer lokalen Variablen einen Variablennamen, gefolgt vom Gleichheitszeichen und dem Wert für den Namen:

PROJECT="SLED"

Geben Sie keine Leerzeichen um das Gleichheitszeichen ein, sonst erhalten Sie einen Fehler. Verwenden Sie zum Setzen einer Umgebungsvariablen export:

export NAME="tux"

Zum Entfernen einer Variable verwenden Sie unset:

unset NAME

Die folgende Tabelle enthält einige häufige Umgebungsvariablen, die Sie in Ihren Shell-Skripten verwenden können:

Tabelle 20-5 Nützliche Umgebungsvariablen

HOME

Home-Verzeichnis des aktuellen Benutzers.

HOST

Aktueller Hostname.

LANG

Wenn ein Werkzeug lokalisiert wird, verwendet es die Sprache aus dieser Umgebungsvariablen. Englisch kann auch auf C gesetzt werden.

PFAD

Suchpfad der Shell, eine Liste von Verzeichnissen, die durch Doppelpunkte getrennt sind.

PS1

Gibt die normale Eingabeaufforderung an, die vor jedem Kommando angezeigt wird.

PS2

Gibt die sekundäre Eingabeaufforderung an, die beim Ausführen eines mehrzeiligen Kommandos angezeigt wird.

PWD

Aktuelles Arbeitsverzeichnis.

BENUTZER

Aktueller Benutzer.

20.5.1 Verwenden von Argumentvariablen

Wenn Sie beispielsweise über das Skript foo.sh verfügen, können Sie es wie folgt ausführen:

foo.sh "Tux Penguin" 2000 

Für den Zugriff auf alle Argumente, die an Ihr Skript übergeben werden, benötigen Sie Positionsparameter. Diese sind $1 für das erste Argument, $2 für das zweite usw. Sie können bis zu neun Parameter verwenden. Verwenden Sie $0 zum Abrufen des Skriptnamens.

Das folgende Skript foo.sh gibt alle Argumente von 1 bis 4 aus:

#!/bin/sh
echo \"$1\" \"$2\" \"$3\" \"$4\"

Wenn Sie das Skript mit den obigen Argumenten ausführen, erhalten Sie Folgendes:

"Tux Penguin" "2000" "" ""

20.5.2 Verwenden der Variablenersetzung

Variablenersetzungen wenden beginnend von links oder rechts ein Schema auf den Inhalt einer Variable an. Die folgende Liste enthält die möglichen Syntaxformen:

${VAR#schema}

entfernt die kürzeste mögliche Übereinstimmung von links:

file=/home/tux/book/book.tar.bz2
echo ${file#*/}
home/tux/book/book.tar.bz2
${VAR##schema}

entfernt die längste mögliche Übereinstimmung von links:

file=/home/tux/book/book.tar.bz2
echo ${file##*/}
book.tar.bz2
${VAR%schema}

entfernt die kürzeste mögliche Übereinstimmung von rechts:

file=/home/tux/book/book.tar.bz2
echo ${file%.*}
/home/tux/book/book.tar
${VAR%%schema}

entfernt die längste mögliche Übereinstimmung von rechts:

file=/home/tux/book/book.tar.bz2
echo ${file%%.*}
/home/tux/book/book