Syntax error

1. Syntax error

Bruno Santana
bruno_r_santana

(usa Ubuntu)

Enviado em 03/05/2011 - 01:36h

blz pessoal?

Eu sou novato e estou obtendo erros ao tentar executar um Shell script que copiei de um livro:

bruno@casa:~/Meus Documentos/Scripts$ sh funcao.sh
funcao.sh: 20: Syntax error: "do" unexpected (expecting "}")

Segue o código fonte. Tem algo errado nele?

#!/bin/bash

Primeira_funcao()
{
while [ "RES" != "nao" ]; do
clear
echo
Digite um nome a ser procurado no arquivo:
read NOME
cat /home/hd.txt | awk -F";" '{print $1, "codigo: $2"}' | grep -i $NOME

Segunda_funcao
done
}

Segunda_funcao()
{
echo Deseja continuar procurando nomes
RES="sim nao"
select opt in $RES; do
if [ $opt = "sim" ]; then
RES="sim"
Primeira_funcao
elif [ $opt = "nao" ];then
RES="nao"
Primeira_funcao
else
echo Opcao invalida
sleep 1
clear
continue
fi
exit
done
}
Primeira_funcao


  


2. Re: Syntax error

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 03/05/2011 - 10:08h

Cara, só dei uma arrumada ... como sugestão, quando não encontrar o nome, seria legal dar uma mesnsagem diferente. Espero que funcione


#!/bin/bash

Primeira_funcao()
{
while [ "$RES" != "nao" ]; do
clear
echo "
Digite um nome a ser procurado no arquivo:"
read NOME
cat /home/hd.txt | awk -F";" '{print $1, "codigo:", $2}' | grep -i $NOME

Segunda_funcao
done
}

Segunda_funcao()
{
echo Deseja continuar procurando nomes
RES="sim nao"
select opt in $RES; do
if [ "$opt" = "sim" ]; then
RES="sim"
Primeira_funcao
elif [ "$opt" = "nao" ];then
RES="nao"
Primeira_funcao
else
echo "Opcao invalida"
sleep 1
clear
Segunda_funcao
fi
exit 0
done
}
Primeira_funcao



3. qual o motivo?

Bruno Santana
bruno_r_santana

(usa Ubuntu)

Enviado em 03/05/2011 - 11:29h

Obrigado pela ajuda. Eu notei que se eu executo assim sh arquivo.sh dá erro:

bruno@Bruno:~$ sh funcao.sh
funcao.sh: 20: Syntax error: "do" unexpected (expecting "}")

Se eu executo ./funcao.sh ele roda o shell script. Alguma idéia do porque disso? Por exemplo no servidor da empresa onde trabalho eu consigo executar usando sh arquivo.sh

valeu!


4. Re: Syntax error

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 03/05/2011 - 12:36h

bom, não é certeza, mas acredito que o caso seja que ao fazer "sh seu_script" você força o interpretador "sh", se você dá um ./seu script ... ai ele usará o "bash" como interpretador, isso porque a primeira linha do seu script é #!/bin/bash.

tente executá-lo com "bash seu_script" e veja se funciona.

As vezes os interpretadores se comportam e tem funções diferentes, o bash nesse caso é bem mais avançado e suporta muitas outras funcionalidades.


5. Re: Syntax error

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 03/05/2011 - 12:43h

O erro encontra-se nesse pedaço aki:

Segunda_funcao()
{
echo Deseja continuar procurando nomes
RES="sim nao"
select opt in $RES; do <-- aki está o erro!!
if [ $opt = "sim" ]; then
...

O certo é:

Segunda_funcao()
{
echo Deseja continuar procurando nomes
RES="sim nao"
select opt in $RES; <-- remover o "do"
if [ $opt = "sim" ]; then
...

Agora deve funcionar.


6. erro

Bruno Santana
bruno_r_santana

(usa Ubuntu)

Enviado em 05/05/2011 - 00:16h

olá pessoal,

eu apaguei o do na linha 20 mas agora dá outros erros. São erros diferentes dependendo de como executo o arquivo.

bruno@casa:~/Meus Documentos/Scripts$ ./funcao.sh
./funcao.sh: linha 21: erro de sintaxe próximo do `token' não esperado `if'
./funcao.sh: linha 21: ` if [ $opt = "sim" ]; then'
bruno@casa:~/Meus Documentos/Scripts$ sh funcao.sh
funcao.sh: 34: Syntax error: "done" unexpected (expecting "}")

Poderiam me ajudar por favor? grato


7. Re: Syntax error

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 05/05/2011 - 09:24h

Retire o "done" da segunda função.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts