Если параметр отсутствует, то используется значение по-умолчанию

${parameter-default}, ${parameter:-default}

Если значения параметров не задананы явно, то они принимают значения по-умолчанию.

${parameter=default}, ${parameter:=default}

Если параметр имеет какое либо значение, то используется alt_value, иначе -- null ("пустая" строка).

${parameter+alt_value}, ${parameter:+alt_value}

Если parameter инициализирован, то используется его значение, в противном случае -- выводится err_msg.

${parameter?err_msg}, ${parameter:?err_msg}
-----------