Quão portátil é essa designação de shell?

1

VAR=${VAR:-value}

O objetivo é definir a variável de ambiente VAR para o valor, a menos que já esteja definido.

Eu vejo que funciona no bash e no traço, mas quão portátil é?

    
por Matt H 13.11.2014 / 04:04

1 resposta

4

Esta tarefa é portátil, funciona em qualquer shell POSIX. POSIX define esta expansão como:

${parameter:-word}

Use Default Values. If parameter is unset or null, the expansion of word shall be substituted; otherwise, the value of parameter shall be substituted.

Mas isso também define VAR para o valor se VAR foi definido e nulo. Para definir VAR para valor, a menos que já esteja definido, você deve usar:

VAR=${VAR-value}

A omissão do cólon faz com que a substituição ocorra apenas se a variável não estiver definida:

In the parameter expansions shown previously, use of the colon in the format shall result in a test for a parameter that is unset or null; omission of the colon shall result in a test for a parameter that is only unset.

    
por 13.11.2014 / 04:11

Tags