No manual - e é sempre bom verificar se primeiro:
${parameter:?word}
If
parameter
is null or unset, the expansion ofword
(or a message to that effect ifword
is not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value ofparameter
is substituted.
Portanto, é uma proteção contra variáveis não definidas, onde você pode mostrar um erro. Além disso,
Omitting the colon results in a test only for a parameter that is unset. Put another way, if the colon is included, the operator tests for both parameter’s existence and that its value is not null; if the colon is omitted, the operator tests only for existence.
Mas, é claro, os exemplos que você deu são um tanto arbitrários e eu me pergunto por que o tutorial os incluiria, quanto mais incluí-los, mas sem explicar o que eles fazem.