Kaip nustatyti, ar bash kintamasis yra tuščias?

Koks geriausias būdas nustatyti, ar bash kintamasis yra tuščias ("")?

Girdėjau, kad rekomenduojama atlikti if [ "x$variable" = "x" ]

Ar tai yra teisingas būdas? (turi būti kažkas paprastesnio)

Sprendimas

Jei kintamasis nenustatytas arba nustatytas į tuščią eilutę (""), bus grąžinama true.

if [ -z "$VAR" ];
Komentarai (10)

-z yra geriausias būdas.

Kitas mano naudotas variantas - nustatyti kintamąjį, bet jį galima pakeisti kitu kintamuoju, pvz.

export PORT=${MY_PORT:-5432}

Jei kintamasis $MY_PORT tuščias, tuomet PORT nustatomas į 5432, kitu atveju PORT nustatomas į `MY_PORT`` reikšmę. Atkreipkite dėmesį, kad sintaksėje yra dvitaškis ir brūkšnys.

Komentarai (1)

Jei jus domina, kaip atskirti set-empty ir unset būsenos atvejus, peržiūrėkite bash parinktį -u:

$ set -u
$ echo $BAR
bash: BAR: unbound variable
$ [ -z "$BAR" ] && echo true
bash: BAR: unbound variable
$ BAR=""
$ echo $BAR

$ [ -z "$BAR" ] && echo true
true
Komentarai (0)