Hoe bepaal je of een bash variabele leeg is?

Wat is de beste manier om te bepalen of een variabele in bash leeg is ("")?

Ik heb gehoord dat het aanbevolen wordt om if [ "x$variable" = "x" ] te doen.

Is dat de juiste manier? (er moet toch iets eenvoudigers zijn)

Oplossing

Dit zal true teruggeven als een variabele niet is ingesteld of is ingesteld op de lege string ("").

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

-z is een de beste manier.

Een andere mogelijkheid die ik heb gebruikt is om een variabele in te stellen, maar die kan worden overschreven door een andere variabele, bijv.

export PORT=${MY_PORT:-5432}

Als de $MY_PORT variabele leeg is, dan wordt PORT ingesteld op 5432, anders wordt PORT ingesteld op de waarde van MY_PORT. Let op de syntaxis inclusief de dubbele punt en het streepje.

Commentaren (1)

Als je'geïnteresseerd bent in het onderscheiden van de gevallen van set-empty versus unset status, kijk dan naar de -u optie voor bash:

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

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