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)
Dit zal true teruggeven als een variabele niet is ingesteld of is ingesteld op de lege string ("").
if [ -z "$VAR" ];
-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.
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