September 25, 2008

Special shell variables

Special shell variables

There are some variables which are set internally by the shell and which are available to the user:

Name Description

$1 - $9 these variables are the positional parameters.

$0 the name of the command currently being executed.

$# the number of positional arguments given to this
invocation of the shell.

$? the exit status of the last command executed is
given as a decimal string. When a command
completes successfully, it returns the exit status
of 0 (zero), otherwise it returns a non-zero exit

$$ the process number of this shell - useful for
including in filenames, to make them unique.

$! the process id of the last command run in
the background.

$- the current options supplied to this invocation
of the shell.

$* a string containing all the arguments to the
shell, starting at $1.

$@ same as above, except when quoted.


$* and $@ when unquoted are identical and expand into the arguments.

"$*" is a single word, comprising all the arguments to the shell, joined together with spaces. For example '1 2' 3 becomes "1 2 3".

"$@" is identical to the arguments received by the shell, the resulting list of words completely match what was given to the shell. For example '1 2' 3 becomes "1 2" "3"

No comments:

Post a Comment