shift(1) shift(1)
NAME
shift - Die Werte der Stellungsparameter nach links verschieben
SYNTAX
shift[ zahl]
BESCHREIBUNG
Das in die Shell sh(1) bzw. ksh(1) eingebaute Kommando shift ver-
schiebt 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.
- Statt dessen 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 ver-
sorgt.
- $# 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 Stellungs-
parametern die ersten 9 Aufruf-Argumente des Kommandos set bzw. einer
Shell-Prozedur direkt anzusprechen. Mit shift können Sie diese Ein-
schränkung umgehen, denn es verschiebt die Werte entsprechend weit
nach links.
ARGUMENTE
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:
shift wird einmal ausgeführt.
Wenn $1 bereits das letzte Aufruf-Argument enthält, so erhalten
Sie beim nächsten Aufruf von shift eine Fehlermeldung.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
shift(1) shift(1)
FEHLERMELDUNG
prozedur: cannot shift
Diese Fehlermeldung erhalten Sie, wenn $# gleich 0 ist. Dem Stellungs-
parameter $1 konnte also kein Wert zugewiesen werden.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
BEISPIELE
Beispiel 1
Innerhalb einer Shell-Prozedur soll das zehnte Aufruf-Argument ange-
sprochen werden:
.
.
arg1=$1
shift
arg10=$9
.
.
.
Die Variable arg1 enthält den ursprünglichen Wert von $1. So ist die-
ser 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:
$ set 1 2 3 4 5 6 7 8 9 10 11 12
$ echo $1
1
$ echo $#
12
$ echo $*
1 2 3 4 5 6 7 8 9 10 11 12
$ shift 6
$ echo $1
7
$ echo $*
7 8 9 10 11 12
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
shift(1) shift(1)
$ echo $#
6
HINWEISE
Bei der Verwendung von shift können sich Abweichungen im Verhalten
ergeben, je nachdem, welche Shell benutzt wird. Die möglichen Abwei-
chungen sind nicht eigens beschrieben.
SIEHE AUCH
ksh(1), set(1), sh(1).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98