(shift positional parameters)
Das in die POSIX-Shell sh eingebaute Kommando shift verschiebt die Werte der Stellungsparameter nach links. Wenn Sie shift ohne Argument aufrufen, sieht diese Verschiebung so aus:
Der Shell-Parameter $0 bleibt unverändert.
Der ursprüngliche Wert von $1 fällt heraus, auf diesen Wert können Sie nicht mehr zugreifen.
Stattdessen erhält $1 den Wert von $2, $2 den Wert von $3, ..., $8 den Wert von $9.
Der Stellungsparameter $9 wird mit dem zehnten Aufruf-Argument versorgt.
$# wird um 1 erniedrigt.
$* und $@ enthalten alle Aufruf-Argumente, beginnend mit dem neuen Wert von $1. Der ursprüngliche Wert von $1 ist herausgefallen.
Die Shell bietet standardmäßig nur die Möglichkeit, mit den Stellungsparametern die ersten 9 Aufruf-Argumente des Kommandos set bzw. einer Shell-Prozedur direkt anzusprechen. Mit shift können Sie diese Einschränkung umgehen, denn es verschiebt die Werte entsprechend weit nach links.
Syntax
shift
[ zahl] |
Eine positive ganze Zahl; shift wird zahl-mal ausgeführt. Der Stellungsparameter $1 erhält als Wert das (zahl+1)te Aufruf-Argument, usw. Wenn Sie zahl zu groß wählen, gibt shift eine Fehlermeldung aus, sobald für $1 kein Aufruf-Argument mehr übrig bleibt; d.h. $# ist gleich 0. zahl nicht angegeben: Wenn $1 bereits das letzte Aufruf-Argument enthält, so erhalten Sie beim nächsten Aufruf von shift eine Fehlermeldung. |
Fehler
Diese Fehlermeldung erhalten Sie, wenn zahl >$# ist. Dem Stellungsparameter $1 konnte also kein Wert zugewiesen werden. |
Internationale Umgebung
Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos shift: LANG Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden. LC_ALL Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen. LC_CTYPE Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung. LC_MESSAGES Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden. NLSPATH Legt den Pfad der Meldungsdateien für LC_MESSAGES fest. |
Beispiel 1
Innerhalb einer Shell-Prozedur soll das zehnte Aufruf-Argument angesprochen werden: : arg1=$1 shift arg10=$9 : Die Variable arg1 enthält den ursprünglichen Wert von $1. So ist dieser Wert auch nach shift noch verfügbar. |
Beispiel 2
Der folgende Bildschirmdialog soll zeigen, wie sich bei shift der Inhalt der Shell-Parameter $1, $* und $# ändert:
|
Siehe auch
set |