Il peut s'avérer utile de s'assurer qu'une variable est bien définie avant de procéder à son remplacement, ou tout simplement de s'assurer que celle-ci n'est pas vide, et dans ce cas de l'initialiser avec une valeur par défaut.
Les différentes formes de remplacement de variables
Expression Interprétation
$var Remplacée par la valeur de la variable "$var" si elle est définie. Sinon par rien.
${var} Remplacée par la valeur de la variable "$var" si elle est définie. Sinon par rien. Cette forme est recommandée, afin de se prémunir de certaines incohérences en cas de concaténations de chaînes de caractères.
${var:-défaut} Remplacée par la valeur de la variable "$var" si elle est définie. Sinon par la valeur "défaut".
${var:+défaut} Initialisée la variable "$var" avec la valeur "défaut" si elle est définie. Dans le cas contraire (non définie) la laisser vide.
${var:?"Message"} Remplacée par la valeur de la variable "$var" si elle est définie. Dans le cas contraire, le shell affiche un message d'erreur défini en lieu et place de "Message". Très utile pour détecter les variables indéfinies et dans ce cas, interrompre le script en cours. Penser à quoter "Message" s'il contient des caractères spéciaux.
${var:=défaut} Remplacée par la valeur de la variable "$var" si elle est définie. Sinon créer et initialiser la variable "$var" avec la valeur "défaut".