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)
Dette returnerer sandt, hvis en variabel ikke er sat eller er sat til den tomme streng ("").
if [ -z "$VAR" ];
-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.
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