PARAM:-value

The shell has other (neater) constructs for doing setting and checking parameters.

${PARAM:-value}
            

This means: if the parameter is UNSET or a NULL value, then substitute the value that has been set previously.

Using MAGIC, we can type:

echo ${MAGIC:-'zingzangzoom'}
            

which should echo:

abracadabra
            

Why?

Since MAGIC is NOT NULL, and NOT UNSET, the variable is used, thus abracadabra.

What happens if we unset the variable to give it a null value?

unset MAGIC
echo ${MAGIC:-'zingzangzoom'}
            

Now echo will print:

zingzangzoom
            

One of the places that system administrators use this is:

${EDITOR:-/bin/vi} somefile
            

If you haven't set your environment variable called EDITOR or it's set to a NULL value, then use the default editor vi to edit the file somefile.

If you have set EDITOR with:

EDITOR=/bin/emacs
            

then you'd use emacs to edit the file somefile.

Notice:

unset $MAGIC
echo ${MAGIC:-'zingzangzoom'}
echo $MAGIC
            

MAGIC is not being set to 'zingzangzoom'. The :- construct is not actually setting the value of MAGIC, it's just testing the value of MAGIC.