Wednesday, July 20, 2011

Shell Variables in Linux and UNIX

The shell sets some environment variables according to the command line arguments specified:
$0
The name the script was invoked with. This may be a basename without directory component, or a path name. This variable is not changed with subsequent shift commands.
$1,$2,$3, ...
The first, second, third, ... command line argument, respectively. The argument may contain whitespace if the argument was quoted, i.e. "two words".
$#
Number of command line arguments, not counting the invocation name $0
$@
"$@" is replaced with all command line arguments, enclosed in quotes, i.e. "one", "two three", "four". Whitespace within an argument is preserved.
$*
$* is replaced with all command line arguments. Whitespace is not preserved, i.e. "one", "two three", "four" would be changed to "one", "two", "three", "four".
This variable is not used very often, 
"$@" is the normal case, because it leaves the arguments unchanged.