Só prá completar: pensei em fazer algo como ... } feet & feet & feet & read -rs -n 1 echo -e "\e[m" setterm -reset clear pkill feet
Mas nesse caso fica um bug que fiquei com preguiça de resolver :) Valtoir 2009/6/9 Valtoir Jardim <valtoirjar...@gmail.com> > Olá, César. > > Não sei se serve, mas uso algo parecido no script do link abaixo: > > http://br.groups.yahoo.com/group/shell-script/files/feet.sh > > O script tem uma função com o mesmo nome, que é chamada logo após sua > declaração. Com o pressionamento de qualquer tecla envio um "pkill > nome_da_função" que mata o próprio script e quaisquer subprocessos que a > função tenha devido ao nome igual. A idéia era mais ou menos essa, chamar > várias vezes a função e ter mais de um par de pés caminhando pela tela ao > mesmo tempo, mas acabei deixando do jeito que está. > > Quanto ao lock, será que o ps não é mais efetivo? > > Valtoir > > 2009/6/9 Eri Ramos Bastos <bastos....@gmail.com> > > >> >> Fala, César. >> >> Para matar os filhos você precisa do trap: >> >> >> http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo010#O_trap_n_o_atrapalha >> http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_02.html >> >> Para saber se um script já está rodando eu costumo criar um arquivo em >> /var/run/ chamado nome-do-processo.pid, que contem o número do PID do >> processo, que você consegue na variável $$. >> >> Dependendo do tamanho que for ficar seu script usar funções é sempre >> uma boa idéia. >> >> []'s >> Eri Ramos Bastos >> >> 2009/6/8 César A. K. Grossmann <cesar...@bol.com.br<cesarakg%40bol.com.br> >> >: >> >> > ALL >> > >> > Estou às voltas com um problema interessante de programação shell >> script. O que eu quero é chamar um shell script, que por sua vez vai se >> chamar a si mesmo "n" vezes, cada uma com um parâmetro diferente na linha de >> comando, mas não vai esperar para terminar a execução, vai colocar em >> background e, quando eu der Ctrl-C no processo-pai, matar todos os filhos e >> então encerrar. Meio estranho, não? Podem pensar nisto como uma espécie de >> super-servidor, ou coisa do tipo. Um pseudo código para o que eu estou >> pensando seria: >> > >> > inicio >> > se "$1" estiver vazio >> > então >> > para argumento em arg1 arg2 arg3 >> > faça >> > $0 $argumento & >> > fim-faça >> > espera Ctrl-C >> > mata filhotes >> > fim >> > senão >> > repetir >> > comando-qualquer $1 >> > espera 15 segundos >> > fim-repetir >> > fim-se >> > fim >> > >> > Cheguei a alguma coisa assim: >> > >> > #!/usr/bin/env bash >> > >> > if [ -z "$1" ] >> > then >> > for arg in primeiro segundo terceiro >> > do >> > $0 $arg & >> > done >> > wait >> > else >> > while true >> > do >> > echo $1 >> > sleep 15 >> > done >> > return >> > fi >> > >> > A pergunta: esta é a melhor técnica de implementar este tipo de coisa? >> > >> > Outra pergunta, para impedir que o script seja executado mais de uma vez >> sem parâmetro nenhum, o ideal é colocar uma espécie de "lock file", qual a >> técnica usada em shell script para isto? E para garantir uma saída "limpa"? >> > >> > Abraços >> > >> > >> > >> > ------------------------------------ >> > >> > ---------------------------------------------------------- >> > 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: >> > shell-script-unsubscr...@yahoogrupos.com.br<shell-script-unsubscribe%40yahoogrupos.com.br> >> > ---------------------------------------------------------- >> > 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 >> > >> > >> > >> >> > > [As partes desta mensagem que não continham texto foram removidas]