[: true: unexpected operator [RESOLVIDO]

1. [: true: unexpected operator [RESOLVIDO]

Iago Lira
iagolira

(usa Debian)

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!


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

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]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

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]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

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]

Perfil removido
removido

(usa Nenhuma)

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

Iago Lira
iagolira

(usa Debian)

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

Obrigado a todos por suas contribuições!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts