shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: tratamento de erros dentro de funções


From: cleberson
Subject: Re: tratamento de erros dentro de funções
Date: Fri, 13 Jul 2012 15:33:31 -0000
User-agent: eGroups-EW/0.82

Pessoal,

Encontrei o problema, a variável '$?' estava pegando o retorno do comando 
"local" e não do retorno do ping. Para resolver o problema basta definir 
primeiro a variável 'result_ping'.

Obrigado pela atenção, e fica ai a dica para este problema.

att,
Cleberson.

#!/bin/bash

function teste_erro(){

local result_ping=""
result_ping=$( ping -q -c 3 -W 5 google.com 2>&1)
if [ "$?" == "0" ]; then
  echo OK
else
  echo ERROR
  echo "$result_ping"
fi

}

teste_erro

############################################

~# bash -x teste.sh
+ teste_erro
+ local result_ping=
++ ping -q -c 3 -W 5 google.com
+ result_ping='PING google.com (74.125.234.9) 56(84) bytes of data.

--- google.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms'
+ '[' 1 == 0 ']'
+ echo ERROR
ERROR
+ echo 'PING google.com (74.125.234.9) 56(84) bytes of data.

--- google.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms'
PING google.com (74.125.234.9) 56(84) bytes of data.

--- google.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms



--- Em address@hidden, Enio Onodera <fuel_sp@...> escreveu
>
> Acho q assim funciona:
> 
> #!/bin/bash
> 
> function teste_erro(){
> ping -q -c 3 -W 5 google.com 2>&1
> if [ "$?" == "0" ]; then
> echo OK
> else
> echo ERROR
> fi
> }
> 
> teste_erro
> 
> 
> 
> Abs,
> Enio Onodera
> 
> 
> ________________________________
>  De: Carlos Alberto Teixeira Magalhães <carlos.alberto.tm@...>
> Para: address@hidden 
> Enviadas: Sexta-feira, 13 de Julho de 2012 11:49
> Assunto: Re: [shell-script] tratamento de erros dentro de funções
>  
> 
>   
> Bom dia.
> 
> Acredito que, nestas duas linhas:
> 
> local result_ping=$( ping -q -c 3 -W 5 google.com 2>&1)
> if [ "$?" == "0" ]; then
> 
> Você esteja testando apenas se a atribuição do valor à variável funcionou,
> e não o resultado do ping.
> 
> Até mais.
> 
> Em 13 de julho de 2012 11:20, cleberson <keuhits@...> escreveu:
> 
> > **
> >
> >
> > Srs.,
> >
> > Bom dia,
> >
> > Gostaria de ajuda para solucionar o problema abaixo, em que, a variável
> > "$?" não funciona dentro de uma função. O exemplo abaixo esta pingando um
> > domínio que não existe, e retornaria um erro após execução. Mas não é o que
> > acontece. Quando se executa o ping fora de uma função o retorno do codigo
> > de erro acontece normalmente.
> >
> > Desde já agradeço atenção.
> >
> > att,
> > Cleberson.
> >
> > #!/bin/bash
> >
> > function teste_erro(){
> > local result_ping=$( ping -q -c 3 -W 5 google.com 2>&1)
> > if [ "$?" == "0" ]; then
> > echo OK
> > else
> > echo ERROR
> > fi
> > }
> >
> > teste_erro
> >
> > ######################################################
> >
> > ~# bash -x teste.sh
> > + teste_erro
> > ++ ping -m 1 -q -c 3 -W 5 google.com
> > + local 'result_ping=PING google.com (74.125.234.6) 56(84) bytes of data.
> >
> > --- google.com ping statistics ---
> > 3 packets transmitted, 0 received, 100% packet loss, time 2001ms'
> > + '[' 0 == 0 ']'
> > + echo OK
> > OK
> >
> > 
> >
> 
> -- 
> Carlos Alberto Teixeira Magalhães
> Analista de Suporte
> Departamento de Informática - DI
> Universidade Estadual do Ceará - UECE
> "A Ciência da Computação nasceu para resolver problemas que não existiriam
> se não fosse o computador." :P
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
>  
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]