Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

POSIX-Shell-Variablen und Parameter-Ersetzung

&pagelevel(4)&pagelevel

Ein Parameter wird durch einen Bezeichner, eine oder mehrere Ziffern oder eines der folgenden Zeichen dargestellt:

* @ # ? - $ !

Eine Variable (ein Parameter gekennzeichnet durch einen Bezeichner) hat einen Wert und keine oder mehrere Attribute. Variablen können Sie Werte und Attribute durch das eingebaute Shell-Kommando typeset zuweisen. Die verwendbaren Attribute werden bei typeset beschrieben. Exportierte Parameter geben ihren Wert und die Attribute an die Umgebung weiter.

Die POSIX-Shell stellt eindimensionale Felder zur Verfügung. Ein Element des Feldes wird über einen Index angesprochen. Ein Index wird durch eckige Klammer auf [, gefolgt von einem arithmetischen Ausdruck und eckige Klammer zu ], beschrieben (zu den arithmetischen Ausdrücken siehe Abschnitt „Arithmetische Berechnungen“).

Einem Feld können Sie mit dem eingebauten Shell-Kommando set Werte zuweisen:
set -A bezeichner werte...
Die Werte aller Indizes müssen im zulässigen Wertebereich liegen. Felder müssen Sie nicht deklarieren, jeder Zugriff auf ein Feldelement mit zulässigem Index ist erlaubt. Wenn erforderlich, wird das Feld angelegt. Greifen Sie auf das Feld ohne Index zu, dann greifen Sie auf das nullte Element zu.

bezeichner=wert[ bezeichner=wert]...

Einer Variablen können Sie in dieser Form einen Wert zuweisen. Ist für eine Variable das Integer-Attribut gesetzt, dann kann bei arithmetischen Berechnungen ihr Wert eingesetzt werden. An Stellungsparameter (gekennzeichnet durch eine Zahl) können Sie Werte mit Hilfe des eingebauten Shell-Kommandos set zuweisen. Der Parameter $0 wird beim Aufruf der Shell auf das nullte Argument gesetzt.

${parameter}

Das Dollar-Zeichen dient zur Einführung von ersetzbaren Parametern. Die POSIX-Shell liest alle Zeichen von ${ bis } als Teil desselben Wortes, auch wenn darin Klammern oder Metazeichen enthalten sind. Falls existent, wird der Wert des Parameters eingesetzt. Die geschweiften Klammern benötigen Sie auch, wenn hinter parameter Buchstaben, Ziffern oder Unterstrich folgen, die nicht Teil des Namens des Parameters sind, oder wenn eine Variable indiziert wird. Besteht parameter aus einer oder mehreren Ziffern, dann ist es ein Stellungsparameter. Einen Stellungsparameter mit mehreren Ziffern müssen Sie in geschweifte Klammern einschließen.

Wird parameter durch die Zeichen Stern * oder Klammeraffe @ beschrieben, dann werden alle Stellungsparameter ab $1 eingesetzt. Als Trenner wird dabei das erste Zeichen der Variablen IFS verwendet (siehe unten). Ein Feldbezeichner mit Index Stern * oder Klammeraffe @ wird durch die Werte aller Elemente ersetzt. Auch hier wird der gleiche Trenner verwendet.

${#parameter}

Wird parameter durch die Zeichen Stern * oder Klammeraffe @ gegeben, dann wird die Anzahl der Stellungsparameter eingesetzt. Sonst wird die Länge des Wertes von parameter eingesetzt.

${#bezeichner[*]}

Die Anzahl der Elemente des Feldes bezeichner wird eingesetzt.

${parameter:-wort}

Wenn parameter gesetzt und nicht die leere Zeichenkette ist, dann wird der Wert, sonst wort eingesetzt.

${parameter:=wort}

Ist parameter nicht gesetzt oder der Wert gleich der leeren Zeichenkette, dann wird parameter auf wort gesetzt. Anschließend wird der Wert eingesetzt.Stellungsparametern können Sie mit dieser Methode keine Werte zuweisen.

${parameter:?wort}

Ist parameter gesetzt und der Wert nicht gleich der leeren Zeichenkette, dann wird der Wert eingesetzt; sonst wird wort ausgegeben und die Shell beendet. Fehlt wort, dann wird eine Standard-Fehlermeldung ausgegeben.

${parameter:+wort}

Wenn parameter gesetzt und nicht die leere Zeichenkette ist, dann wird wort eingesetzt, sonst die leere Zeichenkette.

${parameter#muster} oder ${parameter##muster}

Sollte das POSIX-Shell-Muster muster auf den Anfang des Wertes von parameter passen, dann besteht der Ersetzungstext aus dem Wert von parameter, aus dem der auf muster passende Teil gelöscht wurde. Sonst wird der Wert von parameter eingesetzt. Bei der ersten Form der Angabe wird das kürzeste passende Muster, in der zweiten Form das längste Auftreten des Musters gelöscht.

${parameter%muster} oder ${parameter%%muster}

Passt das POSIX-Shell-Muster muster auf das Ende des Wertes von parameter, dann wird der Ersetzungstext aus dem Wert von parameter ohne den gelöschten auf muster passenden Teil gebildet. Bei der ersten Form der Angabe wird das kürzeste, bei der zweiten Form das längste passende Muster gelöscht.

Bei den letzten 8 Ersetzungen wird wort erst dann bewertet, wenn es als Ersetzungs-Zeichenkette verwendet wird.

Beispiel

pwd wird erst dann ausgeführt, wenn dvz nicht gesetzt oder gleich der leeren Zeichenkette ist.

echo ${dvz:-$(pwd)}

Wird der Doppelpunkt : bei den obigen Ausdrücken weggelassen, dann kontrolliert die POSIX-Shell nur, ob parameter gesetzt ist oder nicht. Die Überprüfung auf die leere Zeichenkette entfällt.


Die folgenden Parameter werden automatisch von der POSIX-Shell gesetzt:


#            Die Anzahl (dezimal) der positionellen Parameter.
-            Alle Optionen, die beim Aufruf der POSIX-Shell oder durch das eingebaute Kommando set gesetzt wurden.
?            Der Endestatus des zuletzt ausgeführten Kommandos.
$            Die Prozess-Nummer der aktuellen POSIX-Shell.

_            

Am Anfang wird der Wert von Unterstrich _ auf den absoluten Pfadnamen der POSIX-Shell oder der ausgeführten POSIX-Shell-Prozedur, wie er an die Umgebung übergebenwird, gesetzt. Später wird _ immer das letzte Argument des vorhergehenden Kommandos als Wert zugewiesen. Dieser Parameter wird nicht für asynchrone Hintergrund-Kommandos gesetzt. Bei der Suche nach Post wird der Parameter _ für die Speicherung des Namens der passenden MAIL-Datei verwendet.

Beispiel

Das Kommando tail greift über $_ auf die letzte Datei des vorhergehenden cat-Kommandos zu.

cat /usr/tmp/mydir/xyz* > alles

tail $_

!            Die Prozess-Nummer des zuletzt als Hintergrundprozess gestarteten Kommandos.
ERRNO        Der Wert dieses Parameters wird vom letzten fehlerhaften Systemaufruf gesetzt. Der Wert ist systemabhängig und dient der Fehlersuche.
LINENO       Die Zeilennummer der aktuellen Zeile in der Prozedur oder in der Funktion, die gerade ausgeführt wird.
OLDPWD       Das letzte aktuelle Dateiverzeichnis, gesetzt durch das cd-Kommando.
OPTARG       Der Wert des letzten Options-Arguments, das von dem eingebauten Kommando getopt bearbeitet wurde.
OPTIND       Der Index des letzten Options-Arguments, das von dem eingebauten Kommando getopt bearbeitet wurde.
PPID         Die Prozess-Nummer des Vaterprozesses der aktuellen POSIX-Shell.
PWD          Das aktuelle Dateiverzeichnis, gesetzt durch das cd-Kommando.
RANDOM       Jedesmal, wenn auf diese Variable zugegriffen wird, wird eine Zufallszahl aus dem Wertebereich von 0 bis 32767 berechnet. Die Folge der Zufallszahlen kann durch eine Wertzuweisung an die Variable RANDOM initialisiert werden.
REPLY        Diese Variable wird bei fehlenden Argumenten von der select-Anweisung oder vom eingebauten Kommando read gesetzt.
SECONDS      Beim Zugriff auf diese Variable enthält ihr Wert die Zeit in Sekunden, die seit dem Aufruf der POSIX-Shell vergangen ist. Wird der Variablen ein Wert zugewiesen, dann wird ihr Wert beim Zugriff auf den Zuweisungswert plus die vergangene Zeit seit der Zuweisung gesetzt.


Die folgenden Variablen werden von der POSIX-Shell benutzt:


CDPATH       Der Suchpfad für das cd-Kommando.
COLUMNS      Wenn diese Variable gesetzt ist, dann wird ihr Wert für die Definition der Breite des Editierfensters beim Editiermodus der POSIX-Shell und für die Ausgabe der select-Liste verwendet. Diese Variable ist sinnvoll, wenn der Zugang zur POSIX-Shell über rlogin erfolgt.
EDITOR       Endet der Wert dieser Variablen mit vi und ist die Variable VISUAL nicht gesetzt, dann wird die entsprechende Option (siehe set) gesetzt. Diese Variable ist sinnvoll, wenn der Zugang zur POSIX-Shell über rlogin erfolgt.
ENV          Wenn diese Variable gesetzt ist, dann enthält ihr Wert den Pfadnamen der Prozedur, die bei Aufruf der POSIX-Shell ausgeführt wird. Diese Prozedur wird meist für Funktions- und Alias-Definitionen benutzt. Auf den Wert der Variablen wird Parameter-Ersetzung zur Dateinamen-Erzeugung durchgeführt.
FCEDIT       Der Name des Standard-Editors für das eingebaute Kommando fc. Momentan ist für diese Variable nur der Wert edt zulässig.
FPATH        Der Suchpfad für Funktionsdefinitionen. Dieser Pfad wird verwendet, wenn auf eine Funktion mit Attribut -u zugegriffen wird und wenn kein Kommando gefunden wurde. Wird eine ausführbare Datei gefunden, dann wird sie gelesen und in der momentanen Umgebung ausgeführt.
HISTFILE     Ist diese Variable bei Aufruf der POSIX-Shell gesetzt, dann wird der Wert als Pfadname für die Datei zur Speicherung der Kommando-history verwendet (siehe Abschnitt „Kommando-Wiederaufruf“).
HISTSIZE     Wenn diese Variable bei Aufruf der POSIX-Shell gesetzt ist, dann behält die Shell den Text eingegebener Kommandos in Erinnerung. Sie können mindestens auf die, als Wert angegebene, Anzahl von früher eingegebenen, und der POSIX-Shell zugänglichen, Kommandos zurückgreifen. Der Standard-Wert ist 128.
HOME         Das Standard-Argument (Login-Dateiverzeichnis) für das Kommando cd.
IFS          (Internal field separators) Interner Feldtrenner der POSIX-Shell, der zur Trennung von Wörtern dient, die aus Kommando- oder Parameter-Ersatz entstehen. Der Feldtrenner wird auch durch das eingebaute Kommando read verwendet. Normalerweise ist der Wert auf Leer-, Tabulator- und Neue-Zeile-Zeichen gesetzt. Das erste Zeichen der IFS-Variable wird zur Trennung der Argumente bei der Ersetzung von "$*" verwendet (siehe Abschnitt „Entwerten von Metazeichen (quoting)“).
IO_CONVERSIONIst diese Variable auf "YES" gesetzt, und wird mit POSIX-Kommandos (z.B. awk, cat, grep...) auf Dateien zugegriffen, die in einem (gemounteten) ASCII-Dateisystem liegen, dann wird automatisch konvertiert.
LINES        Wenn diese Variable gesetzt ist, dann wird ihr Wert für die Berechnung der Spaltenzahl für die Ausgabe von select-Listen verwendet. select-Listen werden vertikal ausgegeben, bis ungefähr zwei drittel der Zeilenzahl LINES gefüllt sind.
MAIL         Enthält der Wert dieser Variablen den Namen einer mail-Datei und ist die Variable MAILPATH nicht gesetzt, dann informiert Sie die POSIX-Shell über das Eintreffen von Post in dieser Datei.
MAILCHECK    Der Wert dieser Variablen gibt an, nach welchem Zeitintervall in Sekunden die POSIX-Shell jeweils nach Änderungen der Modifikationszeit der, durch die Variablen MAIL oder MAILPATH, ausgewiesenen Dateien sehen soll. Der Standard-Wert für MAILCHECK ist 600. Wenn die angegebene Zeit verstrichen ist, dann prüft die POSIX-Shell vor der Ausgabe des nächsten Bereitzeichens nach.
MAILPATH     Eine Liste von Dateinamen, die durch Doppelpunkt : voneinander getrennt ist. Bei gesetzter Variable informiert Sie die POSIX-Shell über jede Änderung an den Dateien der Liste, die innerhalb der letzten MAILCHECK Sekunden erfolgt sind. Jeder Dateiname kann in der Liste von einem Fragezeichen ? und einem Mitteilungstext, der ausgegeben werden soll, gefolgt werden. Diese Mitteilung wird der Parameterersetzung mit der Variablen $_ unterzogen. $_ enthält zu diesem Zeitpunkt den Namen der Datei, die sich geändert hat. Die Standard-Mitteilung ist: „you have mail in $_“.
PATH         Der Suchpfad für Kommandos (siehe Ausführung). Sie können den Wert dieser Variablen nicht verändern, wenn Sie eine eingeschränkte POSIX-Shell benutzen.
PS1          Der Wert dieser Variablen wird für den Parameter-Ersatz expandiert, um das Bereitzeichen der POSIX-Shell zu definieren. Der Standard-Wert ist "$ " bzw. für privilegierte Benutzer "# ". Das Ausrufezeichen ! im Bereitzeichen wird durch die Kommando-Nummer ersetzt (siehe Abschnitt „Kommando-Wiederaufruf“).
PS2          Das zweite Bereitzeichen, das die POSIX-Shell ausgibt, wenn sie noch weitere Eingaben nach einem Neue-Zeile-Zeichen erwartet. Der Standard-Wert ist "> ".
PS3          Das Bereitzeichen für die select-Anweisung, das zur Abfrage der Nummer innerhalb der select-Schleife verwendet wird. Der Standard-Wert ist "#? ".
PS4          Der Wert dieser Variablen wird vor jeder Zeile einer Ausführungs-Verfolgung (execution trace) ausgegeben. Der Wert dieser Variablen wird für den Parameter-Ersatz expandiert. Der Standard-Wert ist "+ ".
SHELL        Der Pfadname der POSIX-Shell wird in der Umgebung gehalten. Beim Aufruf wird die POSIX-Shell zu einer eingeschränkten Shell, wenn auf den Dateinamensteil des Pfadnamens (siehe basename) das Muster *r*sh* passt.
TMOUT        Ist der Wert dieser Variablen positiv, dann beendet sich die POSIX-Shell selbständig, wenn nach Ausgabe des Bereitzeichens (PS1) nicht innerhalb der angegebenen Zeitspanne (in Sekunden) ein Kommando eingegeben wird.
(Vorsicht: Die POSIX-Shell kann mit einem Maximalwert für TMOUT compiliert worden sein, der nicht überschritten werden kann.)
VISUAL       Endet der Wert dieser Variablen mit vi, dann wird die entsprechende Option (siehe Eingebaute Kommandos) gesetzt. Diese Variable ist sinnvoll, wenn der Zugang zur POSIX-Shell über rlogin erfolgt.


Die POSIX-Shell weist den folgenden Variablen Standard-Werte zu:


PATH, PS1, PS2, PS3, PS4, MAILCHECK, TMOUT und IFS


Die Variablen HOME, MAIL und SHELL werden durch das Kommando /START-POSIX-SHELL gesetzt.