Sim, eles ( [ -z "$VAR" ]
e [ "$VAR" = "" ]
...) são equivalentes. Ambos estão testando o vazio de $VAR
(por exemplo, quando não está vinculado ou definido como uma sequência vazia).
Conforme comentado por Celada , coisas ruins podem acontecer ao usar [ "$VAR" = "" ]
if se VAR
houver algum teste válido (por exemplo, if VAR
is -z
), em particular quando [
(ou test
) não for um shell embutido. Mas, bash
ou zsh
a [
um builtin e que não parece ser um problema. Você poderia usar [ "x$VAR" = "x" ]
para o seu teste. Ver teste (1)
Obviamente, estou assumindo algum shell POSIX ou algo semelhante.
Talvez -z
seja um pouco mais rápido (mas você não deve se importar com microssegundos em scripts de shell) e =
talvez seja mais legível.
==
é uma sintaxe incorreta, mas funciona em muitas conchas (presumivelmente porque é a memória muscular de qualquer pessoa que use outras línguas). Você deveria estar usando=
.