Hvordan kan man afgøre, om en bash-variabel er tom?

Hvad er den bedste måde at afgøre, om en variabel i bash er tom ("")?

Jeg har hørt at det anbefales at jeg gør if [ "x$variable" = "x" ]

Er det den korrekte måde? (der må være noget mere ligetil)

Løsning

Dette returnerer sandt, hvis en variabel ikke er sat eller er sat til den tomme streng ("").

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

-z er den bedste måde at gøre det på.

En anden mulighed jeg har brugt er at sætte en variabel, men den kan overstyres af en anden variabel, f.eks.

export PORT=${MY_PORT:-5432}

Hvis variablen $MY_PORT er tom, så bliver PORT sat til 5432, ellers sættes PORT til værdien af MY_PORT. Bemærk syntaksen omfatter kolon og bindestreg.

Kommentarer (1)

Hvis du er interesseret i at skelne mellem set-empty- og unset-status, kan du se på -u-indstillingen til 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
Kommentarer (0)