Festlegen einer Shell-Variablen auf eine Null-Koaleszenz-Weise

19

Ich mag das "Null-Verschmelzen", bei dem Sie eine Variable auf den ersten "Nicht-Null" -Wert in einer Liste von Dingen setzen können. Viele Sprachen unterstützen dies, zum Beispiel:

C #:

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

JavaScript:

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

...etc. Ich bin nur neugierig, ob dies in Bash gemacht werden kann, um eine Variable zu setzen.

Pseudo:

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

Antworten:

28

Das POSIX-Shell- bashÄquivalent wäre:

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

Siehe auch die:

${FOO-${BAR-default}}

Variante, die prüft, ob die Variable gesetzt ist oder nicht, und nicht, ob sie in eine leere Zeichenfolge aufgelöst wird oder nicht (was einen Unterschied in den Fällen macht, in denen eine Variable gesetzt, aber leer ist).

Stéphane Chazelas
quelle
5

Nicht direkt.

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