Erro - Shell [RESOLVIDO]

1. Erro - Shell [RESOLVIDO]

henrique
henriquew

(usa Ubuntu)

Enviado em 15/09/2015 - 20:07h

Boa noite pessoal, mais uma vez eu aqui :D
Estou com um erro na ultima linha de um shell que estou fazendo :
"Syntax error: end of file unexpected (expecting "then")"

É algum erro padrão ou pode ter varais causas, eu escrevi o shell no notepad++ e mandei pro ubuntu server depois, dei chmod 777 para o meu shell e executo sh MeuShell.sh

Muito obrigado pela ajuda, forte abraço!


  


2. Re: Erro - Shell [RESOLVIDO]

Takahashi
signout

(usa Slackware)

Enviado em 15/09/2015 - 20:39h

Boas...
A mensagem é simples, você tem algum if sem o then.
if [ condicao ] ;then
fi
Como você não mandou o script, não da para dizer onde esta o erro.
Outra coisa, não é necessário 777 no arquivo... pode ser o padrão 755.

Espero que ajude.
[]s




3. Re: Erro - Shell [RESOLVIDO]

henrique
henriquew

(usa Ubuntu)

Enviado em 15/09/2015 - 20:43h

signout escreveu:

Boas...
A mensagem é simples, você tem algum if sem o then.
if [ condicao ] ;then
fi
Como você não mandou o script, não da para dizer onde esta o erro.
Outra coisa, não é necessário 777 no arquivo... pode ser o padrão 755.

Espero que ajude.
[]s



O pior é que está certo, por esse motivo fiz no notepad++ ai consigo identar certinho para evitar isso: segue meu shell
PROCESSOS=`ps aux | grep ShellTCC.sh | grep -v grep`
if [$PROCESSOS -le 2];then
####### INICIO DAS VARIAVEIS DE PARAMETRIZAÇÃO #######################
############### banco de dados #################
#Nome do Banco
BANCO=TCC
#Usuario com acesso ao Banco
USUARIO_BANCO=root
#Senha do usuario com acesso ao Banco
SENHA_BANCO=mysql
#Path do MySQL
MYSQL=/usr/bin/mysql
############### fim banco de dados ##############
############### variaveis estaticas #############
#Verifica impressora, path do comando que informa se ha jobs, lpstat
LPSTAT=/usr/bin/lpstat
#Path do comando que remove job da fila de impressao, lprm
LPRM=/usr/bin/lprm
#Path do diretorio de spool da fila de impressao
SPOOL_FILA=/var/spool/cups/
################ fim variaveis estaticas #########
########## FIM DAS VARIAVEIS DE PARAMETRIZAÇÃO ##########################
#BUSCA IMPRESSORAS VIRTUAIS DO BANCO
VIRTUAL=`$MYSQL -B -N -u $USUARIO_BANCO -p $SENHA_BANCO -e "SELECT REPLACE(GROUP_CONCAT(FILAVIRTUAL_IMPRESSORA), ',', ' ') FROM IMPRESSORA;" $BANCO`
while True;do
#Identificar os arquivos dos respectivos jobs da impressora VIRTUAL
vet_jobs=`$LPSTAT -P $VIRTUAL | grep "$VIRTUAL" | cut -d"-" -f2 | cut -d" " -f1 | tail -1`
if [ -n "$vet_jobs" ];then
while job in $vet_jobs; do
if [ $job -lt 10 ];then
nome_arq_job="d0000$job-001"
fi
if [ $job -gt 9 -a $job -lt 100 ];then
nome_arq_job="d000$job-001"
fi
if [ $job -gt 99 -a $job -lt 1000 ];then
nome_arq_job="d00$job-001"
fi
if [ $job -gt 999 -a $job -lt 10000 ];then
nome_arq_job="d0$job-001"
fi
#Identificar o dono do Job
dono=‘$LPSTAT -P $VIRTUAL | grep "$VIRTUAL-$job" | awk ’{print $2}’‘
#Testar se o dono do Job eh diferente de NULL
if test "X$dono" = "X" ;then
#Grava no log:
echo "Nao foi possivel identificar o dono do arquivo $nome_arq_job. Job Cancelado." >> $log_arq
#Deletar job da Impressora Virtual
$LPRM -P $VIRTUAL $job
#executa=`$MYSQL -B -N -u $USUARIO_BANCO -p$SENHA_BANCO -e "Insert into logi (cod,login,data,hora,job,paginas,arquivo,status) VALUES (0,'SEM DONO',SYSDATE(),NOW(),$job,0,'$nome_arq_job','Falhou');" $BANCO`
# Volta ao Loop
continue
fi
#Testar se o arquivo temporario de impressao nao existe
if ! [ -f $SPOOL_FILA$nome_arq_job ];then
#Grava no log:
echo "Arquivo $nome_arq_job nao existe, do job= $job. Job Cancelado." >> $log_arq
#Deletar job da Impressora Virtual
$LPRM -P $VIRTUAL $job
#Inseri "Falhou" na tabela logi
#executa=`$MYSQL -B -N -u $USUARIO_BANCO -p$SENHA_BANCO -e "Insert into logi (cod,login,data,hora,job,paginas,arquivo,status) VALUES (0,'$dono',SYSDATE(),NOW(),$job,0,'$nome_arq_job','Falhou');" $BANCO`
# Volta ao Loop
continue
fi
#Identificar quantas paginas o Job possui
paginas_job=‘cat $SPOOL_FILA$nome_arq_job | grep ’%%Pages:’| tail -1 | cut -d’ ’-f2‘
#Testar se a quantidade de pagina eh negativa, cancelar impressao
if [ $paginas_job -lt 1 ];then
#Grava no log:
#echo "Arquivo $nome_arq_job com a quantidade de pagina menor que 1. Job=$job Cancelado." >> $log_arq
#Deletar job da Impressora Virtual
$LPRM -P $VIRTUAL $job
#Inseri "Arq. sem PGs" na tabela logi
#executa=`$MYSQL -B -N -u $USUARIO_BANCO -p$SENHA_BANCO -e "Insert into logi (cod,login,data,hora,job,paginas,arquivo,status) VALUES (0,'$dono',SYSDATE(),NOW(),$job,0,'$nome_arq_job','Arq. sem Pgs');" $BANCO`
# Volta ao Loop
continue
fi
done
fi
done
################### ESCREVE VARIAVEIS NO LOG ##################
echo "---------BANCO--------" >> /var/log/ShellTCC.log
echo "NomeBanco = $BANCO" >> /var/log/ShellTCC.log
echo "Usuario = $USUARIO_BANCO" >> /var/log/ShellTCC.log
echo "Senha = $SENHA_BANCO" >> /var/log/ShellTCC.log
echo "---------SCRIPT-------" >> /var/log/ShellTCC.log
echo "Dono = $dono" >> /var/log/ShellTCC.log
echo "Fila = $VIRTUAL" >> /var/log/ShellTCC.log
echo "Paginas = $paginas_job" >> /var/log/ShellTCC.log
echo "Nome = $nome_arq_job" >> /var/log/ShellTCC.log
echo "Job = $job" >> /var/log/ShellTCC.log
echo "----------------------" >> /var/log/ShellTCC.log
######################## FIM ESCRITA LOG ######################
######################## CONTROLE DE COTAS ####################
#$usuario = $argv[1];
#$impressora = $argv[2];
#$numpaginas = $argv[3];
#$nome_arq_job = $argv[4];
#$job = $argv[5];
TCC=/TCC-ControleCotas
$TCC $dono $VIRTUAL $paginas_job $nome_arq_job $job
####################### FIM CONTROLE DE COTAS #################
fi





4. Re: Erro - Shell [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 15/09/2015 - 20:46h

Você instalou Notepad++ num Linux?
--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


5. Re: Erro - Shell [RESOLVIDO]

henrique
henriquew

(usa Ubuntu)

Enviado em 15/09/2015 - 20:51h

listeiro_037 escreveu:

Você instalou Notepad++ num Linux?
--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


Não amigo, eu tenho instalado no Windows, fiz nele(notepad++) apenas para facilitar a escrita. O erro ainda persiste ;x
Alguém tem alguma ideia?



6. Re: Erro - Shell [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 15/09/2015 - 20:53h

henriquew escreveu:

listeiro_037 escreveu:

Você instalou Notepad++ num Linux?
--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


Não amigo, eu tenho instalado no Windows, fiz nele(notepad++) apenas para facilitar a escrita. O erro ainda persiste ;x
Alguém tem alguma ideia?


Você pode instalá-lo no WINE. Da última vez que testei funcionou bem.

--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


7. Re: Erro - Shell [RESOLVIDO]

henrique
henriquew

(usa Ubuntu)

Enviado em 15/09/2015 - 20:55h

listeiro_037 escreveu:

henriquew escreveu:

listeiro_037 escreveu:

Você instalou Notepad++ num Linux?
--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


Não amigo, eu tenho instalado no Windows, fiz nele(notepad++) apenas para facilitar a escrita. O erro ainda persiste ;x
Alguém tem alguma ideia?


Você pode instalá-lo no WINE. Da última vez que testei funcionou bem.

--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


É que no caso, preciso rodar esse script no Ubuntu server, apenas isso, porem estou com esse erro, não consigo encontra-lo =(




8. Re: Erro - Shell [RESOLVIDO]

Takahashi
signout

(usa Slackware)

Enviado em 15/09/2015 - 21:24h

Boas...

O script que voce esta executando é esse mesmo???
Porque o erro não seria o que voce mencionou... logo na primeira linha

PROCESSOS=`ps aux | grep ShellTCC.sh | grep -v grep`
if [$PROCESSOS -le 2];then
No caso acima, mesmo que exista um processo, não será um retorno numerico, ou ele retorna vazio ou então ele trara a linha inteira do processo...
E nesse caso, não teria como fazer comparação com um numero....

Uma outra coisa, o seu primeiro while esta com True maiusculo, o que tambem daria um erro.

while True;do

Se esse for realmente o mesmo script, então o erro que ele esta retornando não seria o de EOF.....(expecting then)....
Olhei o script por cima, não sei se tem outras coisas que podem apresentar erro.

espero que ajude.
[]s


9. Re: Erro - Shell [RESOLVIDO]

henrique
henriquew

(usa Ubuntu)

Enviado em 15/09/2015 - 21:35h

signout escreveu:

Boas...

O script que voce esta executando é esse mesmo???
Porque o erro não seria o que voce mencionou... logo na primeira linha

PROCESSOS=`ps aux | grep ShellTCC.sh | grep -v grep`
if [$PROCESSOS -le 2];then
No caso acima, mesmo que exista um processo, não será um retorno numerico, ou ele retorna vazio ou então ele trara a linha inteira do processo...
E nesse caso, não teria como fazer comparação com um numero....

Uma outra coisa, o seu primeiro while esta com True maiusculo, o que tambem daria um erro.

while True;do

Se esse for realmente o mesmo script, então o erro que ele esta retornando não seria o de EOF.....(expecting then)....
Olhei o script por cima, não sei se tem outras coisas que podem apresentar erro.

espero que ajude.
[]s


É que na primeira linha tenho que testar se o processo esta rodando, caso não esteja ele roda, teria outra forma de faze-lo? Desculpe a inexperiência é que sou iniciante em shell script porisso :B Mesmo assim, muito obrigado pelas suas dicas !



10. Re: Erro - Shell [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 15/09/2015 - 22:35h

Você pode criar um arquivo no diretório run, ou tmp, que servirá como marca de processos em execução.
Dentro do arquivo geralmente vai o número do processo, que em BASH é identificado com a variável $$.
Teste echo $$ e ele imprime o número do processo do próprio echo.
Ao encerrar, o script apaga a marcação.

--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


11. Re: Erro - Shell [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 15/09/2015 - 23:11h


Devem ser os caracteres de fim de linha adicionados no windows.

Experimente usar o geany no windows.

Abra este arquivo -> Documentos -> Set Line ending -> escolha o padrão Unix (LF), veja se resolveu. Vc pode utilizar o geany para escrever seus scripts, e outras coisinhas mais.


12. Re: Erro - Shell [RESOLVIDO]

henrique
henriquew

(usa Ubuntu)

Enviado em 16/09/2015 - 00:15h

rai3mb escreveu:


Devem ser os caracteres de fim de linha adicionados no windows.

Experimente usar o geany no windows.

Abra este arquivo -> Documentos -> Set Line ending -> escolha o padrão Unix (LF), veja se resolveu. Vc pode utilizar o geany para escrever seus scripts, e outras coisinhas mais.



PERFEITO !!! rai3mb o erro foi corrigido usando esse edito :)
No entanto, o erro agora é o seguinte:
"ShellTCC.sh: 31:ShellTCC.sh: [root: not found"

Alguma idéia?




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts