Definindo uma variável de shell em uma forma de coalescência nula

18

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

C #:

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

JavaScript:

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

... etc. 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";
    
por devios1 23.01.2013 / 23:13

2 respostas

26

O shell POSIX (então inclui bash ) equivalente seria:

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

Veja também o seguinte:

${FOO-${BAR-default}}

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

    
por 23.01.2013 / 23:26
5

Não diretamente.

my_str="${var_name:-${another_var:-default}}"
    
por 23.01.2013 / 23:26