my_prog arg1 arg2 arg3 is equivalent to $0 $1 $2 $3

  • $0 - gives program name, i.e. my_prog
  • $* - gives all arguements i.e. $i , $2 and $3
  • $# - gives number of arguements, i.e. 3
  • $? - gives return code
  • $$ - gives pid, useful for assigning unique names, e.g. > /tmp/file.$$

These can be used to create a usage statement (which is always good practice), e.g.

USAGE="usage: $0 arg1 arg2 arg3" 
if [ $# -ne 3 ] 
  echo "$USAGE"
  exit 1 

Parameter Subsitution


will show variable if set otherwise string


if variable is not set, use string and set variable to the value of string for

Recent Changes

Contribute to this wiki

Why not help others by sharing your knowledge? Contribute something to this wiki and join out hall of fame!
Contact us for a user name and password