The following set of rules govern the evaluation of all shell variables.
Definition Description
$var signifies the value of var or nothing,
if var is undefined.
${var} same as above except the braces enclose
the name of the variable to be substituted.
${var-thing} value of var if var is defined; otherwise thing.
$var is not set to thing.
${var=thing} value of var if var is defined; otherwise thing.
If undefined $var is set to thing.
${var?message} If defined, $var; otherwise print message
and exit the shell. If the message is
empty, print a standard message.
${var+thing} thing if $var is defined, otherwise nothing.