Você poderia usar isso com uma variável de sinalizador para, por exemplo, adicione um sinalizador a uma linha de comando:
use_x=1
param_x=foobar
somecmd ${use_x:+-x} ${use_x:+$param_x}
Naturalmente, a parte com param_x
não é uma boa ideia, pois está sujeita a divisão de palavras e globbing. Isso não deve ser um problema para o sinalizador estático, mas, em geral, usar um array aqui seria mais robusto.
Para testar se a variável está definida, [ -n "$var" ]
funciona de maneira semelhante, portanto, não há muita utilidade para ${var:+value}
. Por outro lado, ${var+value}
(sem os dois pontos) é útil para dizer a diferença entre uma variável vazia e uma variável não definida:
unset a
b=
[ "${a+x}" = "x" ] && echo a is set
[ "${b+x}" = "x" ] && echo b is set