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. |
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" "" ""
Variablenersetzungen wenden beginnend von links oder rechts ein Schema auf den Inhalt einer Variable an. Die folgende Liste enthält die möglichen Syntaxformen:
entfernt die kürzeste mögliche Übereinstimmung von links:
file=/home/tux/book/book.tar.bz2 echo ${file#*/} home/tux/book/book.tar.bz2
entfernt die längste mögliche Übereinstimmung von links:
file=/home/tux/book/book.tar.bz2 echo ${file##*/} book.tar.bz2
entfernt die kürzeste mögliche Übereinstimmung von rechts:
file=/home/tux/book/book.tar.bz2 echo ${file%.*} /home/tux/book/book.tar
entfernt die längste mögliche Übereinstimmung von rechts:
file=/home/tux/book/book.tar.bz2 echo ${file%%.*} /home/tux/book/book