erro no si ( if)

1. erro no si ( if)

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/04/2010 - 12:28h

Olha meu script é esse.

#!/bin/bash
echo "informe se voce deseja levantar o python sim ou nao"; read py
echo "voce disse que" $py

if ["$py" -eq "sim"] then
{
python /usr/local/bin/ImportRetag /mm/logs/ /usr/local/sigpdv/arq_configuracao /mm/aruivos/ /usr/local/sigpdv/arq_supervisor

elsif
echo 'Voce opitou por nao ativar o python'
}
fi

quando rodo ele gera o seguinte erro.

./teste.bash: line 12: syntax error near unexpected token `fi'
./teste.bash: line 12: `fi'

alguem poder me ajudar ...
obrigado.


  


2. Re: erro no si ( if)

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 26/04/2010 - 12:32h

Tá tudo errado. O certo é assim:

#!/bin/bash
echo "informe se voce deseja levantar o python sim ou nao"; read py
echo "voce disse que" $py

if [ `echo $py` -eq "sim" ]; then

python /usr/local/bin/ImportRetag /mm/logs/ /usr/local/sigpdv/arq_configuracao /mm/aruivos/ /usr/local/sigpdv/arq_supervisor

else
echo 'Voce opitou por nao ativar o python'

fi


3. Re: erro no si ( if)

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 26/04/2010 - 12:41h

Só para lembrar:

if ["$py" -eq "sim"] then
{
...
}

1) Deve-se ter espaços para separar os [ e ]
2) Um ponto e virgula antes do then ou um enter
3) Os blocos em shell script não são delimitados por {}. No caso do if,
seu corpo de comandos fica entre o then e fi

Corrigindo:

if ["$py" -eq "sim"] then
{
...
}

vira

if [ "$py" -eq "sim" ] ; then
...
fi

Qualquer dúvida olhe o código do pacheco ae, que tá muito bem implementado!

t+


4. Re: erro no si ( if)

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/04/2010 - 12:46h

o script esta exatamente assim

#!/bin/bash
echo "informe se voce deseja levantar o python sim ou nao"; read py
echo "voce disse que" $py

if ["$py" -eq "sim"];then

python /usr/local/bin/ImportRetag /mm/logs/ /usr/local/sigpdv/arq_configuracao /mm/aruivos/ /usr/local/sigpdv/arq_supervisor

elsif
echo 'Voce opitou por nao ativar o python'

fi

mais ele continua gerando erro

/teste.bash: line 5: [nao: command not found


5. Re: erro no si ( if)

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 26/04/2010 - 12:49h

Por favor, preste atenção no código q eu pus. Ainda tá errado...


6. renato pacheco

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/04/2010 - 12:58h

eu prestei atenção no cod que vc colocou sim.
mais acontece que com o seu cod ele nao passou pelo primeiro "if" e foi direto para o "else".
egerando esse erro
/teste.bash: line 5: [: sim: integer expression expected
Voce opitou por nao ativar o python


7. Re: erro no si ( if)

Ricardo Cardoso
ricardo cardoso

(usa Debian)

Enviado em 26/04/2010 - 13:58h

Tira esses ;

corrigindo:

#!/bin/bash
echo "informe se voce deseja levantar o python sim ou nao"
read py
echo "voce disse que: $py"

if [ '$py' -eq "sim" ]
then
{
python /usr/local/bin/ImportRetag /mm/logs/ /usr/local/sigpdv/arq_configuracao /mm/aruivos/ /usr/local/sigpdv/arq_supervisor

else #### (vc colocou elseif e o correto é elif nuinguém aqui percebeu que está errado. mas noseu caso tem que usar apenas else)
echo 'Voce opitou por nao ativar o python'
}
fi


8. Re: erro no si ( if)

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 26/04/2010 - 14:02h

@ricardo_cardoso, olhe BEM para o meu código. Eu troquei o "elsif" por "else". Elif é usado para várias condições, q não é o caso. Outra coisa:

if [ "$py" -eq "sim" ]; then

É igual a:

if [ "$py" -eq "sim" ]
then

Não cometa gafes...


9. Re: erro no si ( if)

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/04/2010 - 15:32h

Descubra as diferenças entre os dois códigos:
Seu problema principal é na gramatica da bash.




#!/bin/bash


echo "Informe se voce deseja levantar o python sim ou nao";
read PY
echo "Voce disse que: $PY"

if [ $PY == 'sim' ]; then

python /usr/local/bin/ImportRetag /mm/logs/ /usr/local/sigpdv/arq_configuracao /mm/aruivos/ /usr/local/sigpdv/arq_supervisor

else

echo 'Voce optou por nao ativar o python'

fi



10. Re: erro no si ( if)

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/04/2010 - 15:39h

Nota:

-eq e similares são para comparadores numéricos...

Para strings deve se usar == e similares...







11. Re: erro no si ( if)

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 26/04/2010 - 16:44h

@./.ronin, realmente o q vc disse tá correto. Tanto é q a msg d erro q dá é q ele pede variável integer (refere-se a número inteiro). Não tinha notado isso...