Bash expansions

Handy table of Bash expansions.

null means set and empty, like var="".

Parameter is set to the string parameter parameter="parameter".

What Parameter Result
${parameter-word} unset word
${parameter-word} null parameter
${parameter-word} set nonull parameter
${parameter:-word} unset word
${parameter:-word} null word
${parameter:-word} set nonull parameter
${parameter+word} unset nothing
${parameter+word} null word
${parameter+word} set nonull word
${parameter:+word} unset nothing
${parameter:+word} null nothing
${parameter:+word} set nonull word
${parameter?word} unset echo word >&2;exit 1
${parameter?word} null parameter
${parameter?word} set nonull parameter
${parameter:?word} unset echo word >&2;exit 1
${parameter:?word} null echo word >&2;exit 1
${parameter:?word} set nonull parameter