Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

shift - Die Werte der Stellungsparameter nach links verschieben

&pagelevel(4)&pagelevel

(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]

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.

Fehler

sh: shift: bad number

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:

$ 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
$ echo $#
6

Siehe auch

set