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 <[EMAIL PROTECTED]> wrote:
> Em Tue, 12 Sep 2006 00:30:28 -0300, Halexsandro de Freitas Sales
> <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
> ---------------------------------------------------------------------
> 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
>
>
>
>
>
>
>
>
>


---------------------------------------------------------------------
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: [EMAIL PROTECTED]
---------------------------------------------------------------------
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

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a