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 eine bestimmte Variable benötigen, fügen Sie den Namen Ihrer Variablen als Argument ein:
printenv PATH
Eine Variable kann auch über echo angezeigt werden:
echo $PATH
Damit wird die Variable PATH gedruckt. 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 Variablen verwenden Sie unset:
unset NAME
Die folgende Tabelle enthält einige häufige Umgebungsvariablen, die Sie in Ihren Shell-Skripten verwenden können:
Tabelle 5-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. |
|
PATH |
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 |
|
USER |
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 all diese 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 Variablen 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.bz2entfernt die längste mögliche Übereinstimmung von links:
file=/home/tux/book/book.tar.bz2
echo ${file##*/}
book.tar.bz2entfernt die kürzeste mögliche Übereinstimmung von rechts:
file=/home/tux/book/book.tar.bz2
echo ${file%.*}
/home/tux/book/book.tarentfernt die längste mögliche Übereinstimmung von rechts:
file=/home/tux/book/book.tar.bz2
echo ${file%%.*}
/home/tux/book/book