Quais são as finalidades e casos de uso de “$ {parameter: + word}”? [fechadas]

1

Do manual do Bash

${parameter:+word}

If parameter is null or unset, nothing is substituted, otherwise the expansion of word is substituted.

Parece que a substituição de string é feita apenas quando a string de destino em "parameter" existe e não é nula.

Qual é o propósito e os casos de uso desse tipo de expansão de parâmetro?

Obrigado.

    
por Tim 24.07.2017 / 21:21

1 resposta

2

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
    
por 24.07.2017 / 21:59

Tags