Peczenyj's Blog

Just Another /Perl|Ruby|C++|Java|Python|JavaScript|Flash|Bash/ Hacker

Resolvendo Problemas Comuns 6 - Unary Operator Expected

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.

$  [ $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!

Comments

Tiago Peczenyj
Bah, não tinha reparado nisso.

E faz sentido, afinal [[ é built-in e [ é, geralmente, um apelido para o comando /bin/test

valeu!
Cláudio
Outra solução: usar [[ ]] ao invés de [ ].