Définition d'une variable shell d'une manière coalescente nulle

20

J'aime vraiment la «coalescence nulle», où vous pouvez définir une variable à la première valeur «non nulle» dans une liste de choses. De nombreuses langues le prennent en charge, par exemple:

C #:

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

JavaScript:

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

...etc. Je suis juste curieux de savoir si cela peut être fait dans Bash pour définir une variable?

pseudo:

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

Réponses:

29

L' bashéquivalent du shell POSIX (donc inclut ) serait:

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

Voir aussi:

${FOO-${BAR-default}}

variante qui vérifie si la variable est définie ou non au lieu de se résoudre à la chaîne vide ou non (ce qui fait une différence dans les cas où une variable est définie mais vide).

Stéphane Chazelas
la source
5

Pas directement.

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