If parameter is unset or null, the expansion of word is substituted.
> Otherwise, the value of parameter is substituted.

$ unset var $ echo “${var:-XX}” # Parameter is unset -> expansion XX occurs XX $ var="" # Parameter is null -> expansion XX occurs $ echo “${var:-XX}” XX $ var=23 # Parameter is not null -> original expansion occurs $ echo “${var:-XX}” 23

> ```
${parameter:=word}

If parameter is unset or null, the expansion of word is assigned to > parameter. The value of parameter is then substituted. Positional > parameters and special parameters may not be assigned to in this way.

$ unset var
$ echo "${var:=XX}"     # Parameter is unset -> word is assigned to XX
XX
$ echo "$var"
XX
$ var=""                # Parameter is null -> word is assigned to XX
$ echo "${var:=XX}"
XX
$ echo "$var"
XX
$ var=23                # Parameter is not null -> no assignment occurs
$ echo "${var:=XX}"
23
$ echo "$var"
23