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

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

Re: [shell-script] como cancelar a interrupção de um script???


From: Flavio Junior
Subject: Re: [shell-script] como cancelar a interrupção de um script???
Date: Tue, 12 Sep 2006 09:09:44 -0300

Hm...

Na verdade o trap intercepta o sinal e quando ele ocorre executa uma
função (ai no seu caso a foo()), mas de qualquer  forma o sinal ocorre
e é interpretado, ou seja, alterando seu proprio script pra uma
explicação melhor:

# codigo
#!/bin/bash
trap foo INT

function foo() {
      echo bar;
}

#for i in $(seq 1 10); do
      sleep 50
#done
# fim do codigo

Execute o script e pressione ctrl+c, a função foo() é executa porem o
script é finalizado com a interpretação do SIGINT, na mesma forma do
seu script original acontece se eu pressionar ctrl+c 10 vezes (que
seria o SIGINT pra sair de todos os laços do for).

Ao contrario disso, para IGNORAR o signal, voce deve fazer:

trap "" INT

Ficando o codigo:

# codigo
#!/bin/bash
trap "" INT

#for i in $(seq 1 10); do
      sleep 50
#done
# fim do codigo

E prepare-se para esperar 50 segundos ;) - ou entao use o SIGSTOP
(ctrl+z) e mate o processo.


Boa sorte,

Flávio do Carmo Junior



On 9/11/06, Rafael Pereira <address@hidden> wrote:
Em Tue, 12 Sep 2006 00:30:28 -0300, Halexsandro de Freitas Sales
<address@hidden> escreveu:
> boa noite a todos...
> a minha dúvida é a seguinte:
> existe alguma forma de obrigar um script a ser executado até o fim???
> ou seja, durante a sua execução,  se  o usuário  precionar  'ctrl +  c'
> o mesmo não finalizar...
> desde já obrigado!

Sim, vc pode sobreescrever o comportamento normal de um sinal usando trap.
Por exemplo:

-- codigo --
#!/bin/bash
trap foo INT

function foo() {
        echo bar;
}

for i in $(seq 1 10); do
        sleep 5
done

-- codigo --

[]s
Rafael Pereira
http://rafael.computeiro.com

--
Usando o revolucionário cliente de correio do Opera:
http://www.opera.com/mail/


---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil


Links do Yahoo! Grupos











reply via email to

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