Mikä on paras tapa määrittää, onko muuttuja bashissa tyhjä ("")?
Olen kuullut, että on suositeltavaa tehdä if [ "x$muuttuja" = "x" ]
.
Onko tämä oikea tapa? (täytyy olla jotain suoraviivaisempaa)
Palauttaa arvon true, jos muuttuja ei ole asetettu tai se on asetettu tyhjään merkkijonoon ("").
if [ -z "$VAR" ];
-z
on paras tapa.
Toinen vaihtoehto, jota olen käyttänyt, on asettaa muuttuja, mutta se voidaan ohittaa toisella muuttujalla, esim.
export PORT=${MY_PORT:-5432}
Jos muuttuja $MY_PORT
on tyhjä, PORT
asetetaan arvoon 5432, muuten PORT asetetaan arvoon MY_PORT
. Huomaa, että syntaksissa on kaksoispiste ja väliviiva.
Jos olet kiinnostunut erottamaan set-empty- ja unset-tilanteet toisistaan, tutustu bashin -u-vaihtoehtoon:
$ set -u
$ echo $BAR
bash: BAR: unbound variable
$ [ -z "$BAR" ] && echo true
bash: BAR: unbound variable
$ BAR=""
$ echo $BAR
$ [ -z "$BAR" ] && echo true
true