Qual é a melhor maneira de determinar se uma variável em bash está vazia ("")?
Ouvi dizer que é recomendado que eu faça if [ "x$variable" = "x" ]
Essa é a forma **correcta***? (deve haver algo mais simples)
Isto retornará verdadeiro se uma variável não estiver definida ou definida para a string vazia ("").
if [ -z "$VAR" ];
-z
é a melhor maneira.
Outra opção I've usada é definir uma variável, mas ela pode ser substituída por outra variável, por exemplo
export PORT=${MY_PORT:-5432}
Se a variável $MY_PORT
estiver vazia, então PORT
é definida para 5432, caso contrário PORT é definida para o valor de MY_PORT
. Note que a sintaxe inclui os dois pontos e traço.
Se você'está interessado em distinguir os casos de status set-empty versus unset status unset, olhe a opção -u para 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