quinta-feira, 26 de julho de 2007

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!

2 comentários:

Patola disse...

Outra solução: usar [[ ]] ao invés de [ ].

Tiago "PacMan" Peczenyj disse...

Bah, não tinha reparado nisso.

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

valeu!