- shell built-in function to traverse either a shell's argument list or a list of field-separated words
* shift [n]
The positional parameters from $n+1 . . . are renamed $1 . . . . If n is not given, it is assumed to be 1.
The components of argv, or variable, if supplied, are shifted to the left, discarding the first component. It is an error for the variable not to be set or to have a null value.
The positional parameters from $n+1 $n+1 . . . are renamed $1 . . ., default n is 1. The parameter n can be any arithmetic expression that evaluates to a non-negative number less than or equal to $#.
On this man page, ksh(1) commands that are preceded by one or two * (asterisks) are treated specially in the following ways:
Variable assignment lists preceding the command remain in effect when the command completes.
I/O redirections are processed after variable assignments.
Errors cause a script that contains them to abort.
Words, following a command preceded by ** that are in the format of a variable assignment, are expanded with the same rules as a variable assignment. This means that tilde substitution is performed after the = sign and word splitting and file name generation are not performed.
See attributes(5) for descriptions of the following attributes: