Uma desatenção, muito comum quando trabalhamos com variáveis de ambiente no shell é que, quando elas não foram setadas ainda, o shell expande elas para… nada.
Nesse caso o (resultado do) teste da variável até pode fazer sentido, porém troque o == por um != e veja o resultado. A solução é proteger a variável com aspas!
Simples e rápido!
$ [ $XALALA == "oi" ] && echo 'ok' || echo 'nok'
-bash: [: ==: unary operator expected
nok
Nesse caso o (resultado do) teste da variável até pode fazer sentido, porém troque o == por um != e veja o resultado. A solução é proteger a variável com aspas!
$ [ "$XALALA" != "oi" ] && echo 'ok' || echo 'nok'
ok
Simples e rápido!
E faz sentido, afinal [[ é built-in e [ é, geralmente, um apelido para o comando /bin/test
valeu!