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. |