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