Ustawienie zmiennej powłoki w zerowy sposób łączący


20

Naprawdę lubię „zerowanie koalescencyjne”, w którym można ustawić zmienną na pierwszą wartość „inną niż null” na liście rzeczy. Obsługuje to wiele języków, na przykład:

DO#:

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

JavaScript:

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

...itp. Jestem tylko ciekawy, czy można to zrobić w Bash, aby ustawić zmienną?

rzekomy:

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

Odpowiedzi:


29

Odpowiednikiem powłoki POSIX (tak obejmuje bash) jest:

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

Zobacz także:

${FOO-${BAR-default}}

wariant, który sprawdza, czy zmienna jest ustawiona, czy nie zamiast tego, czy tłumaczy na pusty ciąg znaków, czy nie (co robi różnicę w przypadkach, gdy zmienna jest ustawiona, ale pusta).


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.