Pular para o conteúdo

[: true: unexpected operator [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. [: true: unexpected operator [RESOLVIDO]

Enviado em 17/12/2014 - 16:58h

Olá pessoal, no meu script tem as seguintes linhas:

#!/bin/bash

polariza="true"

if [ "$polariza" == "true" ]
then
.
.
.
fi


Quando compilo:
$./main.sh

Aparece a seguinte mensagem:

"
[ true == true ]
main.sh: 485: [: true: unexpected operator"

Se alguém me ajudar a resolver este problema ficarei muito grato!

Responder tópico

2. Re: [: true: unexpected operator [RESOLVIDO]

Melhor resposta

Enviado em 17/12/2014 - 18:16h

passosfil escreveu:

Olá pessoal, no meu script tem as seguintes linhas:

#!/bin/bash

polariza="true"

if [ "$polariza" == "true" ]
then
.
.
.
fi


Quando compilo:
Shell Script é uma linguagem interpretada.


$./main.sh

Aparece a seguinte mensagem:

"
[ true == true ]
main.sh: 485: [: true: unexpected operator"

Se alguém me ajudar a resolver este problema ficarei muito grato!
O operador '==' não existe para o comando 'test' cujo alias é o '[', para comparar string usa-se apenas '='. Dê uma olhada na man page do 'test' para conferir todas as opções disponíveis.

3. Re: [: true: unexpected operator [RESOLVIDO]

Enviado em 17/12/2014 - 17:24h

passosfil escreveu:

Olá pessoal, no meu script tem as seguintes linhas:

#!/bin/bash

polariza="true"

if [ "$polariza" == "true" ]
then
.
.
.
fi

Troque o true porque ele é palavra "reservada" creio...
Está entre aspas porque não tenho certeza.

poraliza="certo" tem que funfar....



Quando compilo:
$./main.sh

Aparece a seguinte mensagem:

"
[ true == true ]
main.sh: 485: [: true: unexpected operator"

Se alguém me ajudar a resolver este problema ficarei muito grato!
Uma outra possibilidade é a var estar vindo de alguma função e perdeu o valor.
Este tipo de comparação acima não vai funcionar mesmo...

Uma regra que aprendi faz tempo é tomar cuidado com a inicialização de variáveis...

Se vc inicializou poraliza="certo" no início do script, ela é válida até o fim.
Mas se vc inicializar dentro de um novo pipe, quando voltar perdeu o valor.
Geralmente pensamos que isso só ocorre com funções.
Cometi muitas vezes este erro.

Por exemplo um while.
O que faz dentro de um while em termos de definição, só vale dentro dele.
Vai perceber que ele abre um novo pipe e quando voltar a tua var criada nele não existe mais.

Será que consegui passar a idéia ?

Como vc não forneceu dados adicionais para ter certeza, só posso imaginar que o problema ocorreu porque definiu a var dentro de função ou dentro de algum pipe.

Deixe-me saber...

4. Re: [: true: unexpected operator [RESOLVIDO]

Enviado em 17/12/2014 - 18:29h

textmode escreveu:

O operador '==' não existe para o comando 'test' cujo alias é o '[', para comparar string usa-se apenas '='. Dê uma olhada na man page do 'test' para conferir todas as opções disponíveis.
Bem lembrado ;) Relembrando....

http://www.vivaolinux.com.br/artigo/As-maravilhas-do-Shell-Script?pagina=3



5. Re: [: true: unexpected operator [RESOLVIDO]

Enviado em 17/12/2014 - 19:36h

Humm, lembrando só agora ... pode ter existido confusão com '[[...]]' também. Neste caso, a documentação a consultar, no caso do bash é a:

$ info bash 'Bash Features' 'Bash Conditional Expressions' # a sessão existe na manpage também

6. Agradecimento

Enviado em 18/12/2014 - 12:07h

Obrigado a todos por suas contribuições!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder