Establecer una variable de shell en una forma de fusión nula

20

Soy realmente aficionado a la "fusión nula", donde puede establecer una variable en el primer valor "no nulo" en una lista de cosas. Muchos idiomas admiten esto, por ejemplo:

C#:

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

JavaScript:

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

... etc. Tengo curiosidad por saber si esto se puede hacer en Bash para establecer una variable.

seudo:

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

Respuestas:

29

El bashequivalente de shell POSIX (así incluido ) sería:

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

Ver también el:

${FOO-${BAR-default}}

variante que comprueba si la variable está configurada o no en lugar de si se resuelve en la cadena vacía o no (lo que marca la diferencia en los casos en que una variable está configurada pero vacía).

Stéphane Chazelas
fuente
5

No directamente.

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