Pular para o conteúdo

DÚVIDA COM $?

Responder tópico
  • Denunciar
  • Indicar

1. DÚVIDA COM $?

Enviado em 04/07/2013 - 11:29h

alguem pode me explicar como posso usar a $? ?

estou tentando fazer algo do tipo

ping -c 1 www.google.com

while $?; do
ping -c 1 www.google.com
done;

mas ta dando erro!!!!

o ping ele executa la em cima...

tentei de todos os jeitos, pls, alguem me ajuda...

dei uma boa lida ja em introducoes ao SC mas ta osso!!!

Responder tópico

2. Re: DÚVIDA COM $?

Enviado em 04/07/2013 - 12:47h

Bom , achei a resposta, tem que por entre [ ]

fica assim [ $? ]

então bom.. fica como resolvido ai, e para futuras dúvidas não tenham esse desleixe! hehehe

para if também tem que fazer dessa forma..


pessoal que trabalha com 3g é uma boa por um tempo no ping ou usando o sleep.

[]'s

3. Re: DÚVIDA COM $?

Enviado em 04/07/2013 - 13:06h

Cara... se você quer lidar com o status de saída do último comando e jogar isso em um loop while vai ser doidera. Me conta aí, o que você realmente quer fazer com esse script?

4. Re: DÚVIDA COM $?

Enviado em 04/07/2013 - 13:16h

Então meu caro, eu quero verificar o tempo todo se estou conectado na internet.


Isto pq este script vai ficar em um raspberry pi, com conexao 3g..

a 3g se fica ociosa ela cai, e nós estmaos trabalhando com banco de dados,precisamos que esteja
se possivel o máximo conectado, trocando informacoes.

sou iniciante na area de SC, então pela lógica básica faço um ping antes e dpz faço um while infinito testando o ping..

logico que mais pra frente vou por um sleep ou timer para nao ficar consumindo tanto da máquina..


vc me sugere outra solucao? estou de portas abertas para novas sugestoes :)

5. Re: DÚVIDA COM $?

Enviado em 04/07/2013 - 13:24h

olacomovaivc escreveu:

Então meu caro, eu quero verificar o tempo todo se estou conectado na internet.


Isto pq este script vai ficar em um raspberry pi, com conexao 3g..

a 3g se fica ociosa ela cai, e nós estmaos trabalhando com banco de dados,precisamos que esteja
se possivel o máximo conectado, trocando informacoes.

sou iniciante na area de SC, então pela lógica básica faço um ping antes e dpz faço um while infinito testando o ping..

logico que mais pra frente vou por um sleep ou timer para nao ficar consumindo tanto da máquina..


vc me sugere outra solucao? estou de portas abertas para novas sugestoes :)
Pra fazer while infinito é melhor fazer assim:
 while [ 1 ] ; do ping -c www.google.com.br ; done 
Que nem a gente faz quando usa menus com ncurses e dialog. Em algumas distros o while [ 1 ] tem que ser substituído pelo while [ 0 ] pra dar certo, mas a idéia é a mesma. Dessa forma gera menos processamento, porque o while [ $? ] pára pra ler o último comando executado (uma camada a mais de processamento), enquanto o while [ 1 ] não. Sacou?

Enfia um sleep depois do ping, assim
 while [ 1 ]; do ping -c www.google.com.br ; sleep 5s ; done  
Pra ele dar um sleep de 5 segundos. Pra um sleep de 1 minuto, troque o 5s por 1m, e assim vai.

6. Re: DÚVIDA COM $?

Enviado em 04/07/2013 - 13:29h

opa me expliquei mal , vou mudar aqui, teria que ser assim na real:


ping -c 1 www.google.com

while [ $? -eq 0 ]; do
ping -c 1 www.google.com
done;

ai tipo, se a saida for diferente de 0, entao ele sai.

saindo ele faz um comando embaixo do tipo:

reconnect();

pois se ele nao esta mais pingando é pq a conexao caiu.. hehe nao me liguei nesse detalhe!

7. Re: DÚVIDA COM $?

Enviado em 04/07/2013 - 13:33h

olacomovaivc escreveu:

opa me expliquei mal , vou mudar aqui, teria que ser assim na real:


ping -c 1 www.google.com

while [ $? -eq 0 ]; do
ping -c 1 www.google.com
done;

ai tipo, se a saida for diferente de 0, entao ele sai.

saindo ele faz um comando embaixo do tipo:

reconnect();

pois se ele nao esta mais pingando é pq a conexao caiu.. hehe nao me liguei nesse detalhe!
Ah, tá... Nesse seu caso realmente é melhor puxar pelo $? mesmo, nem tem escolha ;-)

8. Re: DÚVIDA COM $?

Enviado em 04/07/2013 - 13:41h

valeu pela ajuda!

9. Re: DÚVIDA COM $?

Enviado em 04/07/2013 - 21:03h

Uma sugestão:

[code]
reconnect() {
#aqui os seus comandos pra reconectar
}

while true; do
ping -c2 www.google.com
if [ "$?" -ne "0" ]; then
reconnect()
fi
sleep 10s
done
[code]


Assim ele fica no loop infinito e não precisa sair dele pra reconectar...

10. Re: DÚVIDA COM $?

Enviado em 04/07/2013 - 21:05h

Deu pau na formatação, era assim:


reconnect() {
#aqui os seus comandos pra reconectar
}

while true; do
ping -c2 www.google.com
if [ "$?" -ne "0" ]; then
reconnect()
fi
sleep 10s
done

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder