Configurando uma variável de shell de maneira nula coalescente

19

Eu realmente gosto de "coalescência nula", onde você pode definir uma variável para o primeiro valor "não nulo" em uma lista de coisas. Muitos idiomas suportam isso, por exemplo:

C #:

String myStr = string1 ?? string2 ?? "default";

JavaScript:

var myStr = string1 || string2 || "default";

... etc Só estou curioso para saber se isso pode ser feito no Bash para definir uma variável?

pseudo:

MY_STR=$ENV{VAR_NAME}??$ANOTHER_VAR??"default";
devios1
fonte

Respostas:

28

O bashequivalente do shell POSIX (incluído ) seria:

${FOO:-${BAR:-default}}

Veja também o:

${FOO-${BAR-default}}

variante que verifica se a variável está definida ou não, em vez de resolver para a sequência vazia ou não (o que faz a diferença nos casos em que uma variável está definida, mas vazia).

Stéphane Chazelas
fonte
5

Não diretamente.

my_str="${var_name:-${another_var:-default}}"
Ignacio Vazquez-Abrams
fonte