Talvez já tenha feito isso, caso não, experimente pois pode te dar alguma pista. Insira um set -x em algum ponto do script para o shell escrever em stderr cada passo que fará. Se o volume de informações ficar muito alto na tela pode ser melhor enviar para arquivo com um exec 2> /tmp/teste
Pode acompanhar on the fly com tail -f /tmp/teste em outro terminal ou examinar posteriormente, ou na hora, o arquivo com um editor. No segundo caso não esqueça que ele já pode ter aumentado desde que o carregou para o exame atual. Também parece interessante que o script reporte quando inicia e quando termina, com um echo "alguma coisa" >&2. Isso pode ajudar a determinar se há realmente um loop e se ele é interno ou não. Boa caça! ------------------------------------------------------------------ >From: "Diego Pasqualin" <[EMAIL PROTECTED]> >Date: Wed, 25 Apr 2007 13:10:22 -0000 > >Bom dia, estou criando um script para verificar existência de HD em >uma máquina com bootremoto. Caso o HD exista, verifica se ele se >encontra nos padrões (uma única partição, no formato XFS), se >negativo, refaz a tabela de partições, se o hd está no padrão, roda um >xfs_repair. > >Simples, não fosse o inconveniente de, no "else", da cadeira de "if's" >que verificam o padrão, o script entrasse em um loop (!?). Detalhe que >no script inteiro não existe nenhum loop, o que retira a possibilidade >de erro de sintaxe, além do mais, o fato acontece somente no else, >caso um dos ifs acima seja executado, o programa segue normalmente. > >Quem chama esse meu script shell é um scrip expect, comando exec >/sbin/verifica_tipo3, já tentei usar exec bash -c >"/sbin/verifica_tipo3" tb, sem sucesso. > >Reparei que se eu comentar o comando xfs_repair, o script não entra em >loop! Porém, apesar de parecer óbvio, é estranho acreditar que ele >seja o problema, já que, se executado "no braço", fora do script, >também funciona normalmente. > >Ai vai parte do código: > >###------------------------code-------------------------### >----------------------------------------------------------- > ># Se existir mais que duas particoes, ou nao existir particoes. >if [ ${TESTE} -eq 0 ]; then ># Terminal nao e tipo 3 >exit 0; > >elif [ ${TESTE} -gt 2 -o ${TESTE} -eq 1 ]; then >MSG="Um HD foi encontrado, porém não se encontra no padrão >Paraná Digital. >Criando partição e formatando HD, esta operação pode demorar alguns >minutos..." >mensagem "${MSG}" > >cria_particao >formata_particao > ># fstyp retorna o nome do sistema de arquivos, se for diferente de >Xfs, formata particao >elif [[ $(fstyp "${HD}1") != "xfs" ]]; then >MSG="Um HD foi encontrado, porém nao se encontra no padrão >Paraná Digital. >Formatando HD, esta operação pode demorar alguns minutos..." >mensagem "${MSG}" >formata_particao > ># Se existir apenas uma particao e ela for xfs, faz um teste de >integridade >else >MSG="Verificando integridade do HD. >Esta operação pode demorar alguns minutos..." ># mensagem "${MSG}" > >if mount | grep -q ${HD}1; then >umount ${HD}1 >fi ># xfs_repair ${HD}1 >mount ${HD}1 /media/hd >fi > >###------------------------code-------------------------### >----------------------------------------------------------- > >Como mencionado, o programa apresenta comportamento inesperado somente >no else. Já tentei colocar exit 0 depois do repair. Já verifiquei que >o repair é executado corretamente, retorna 0, reparei também, que a >cada loop, a instância ($$) é diferente. > >Alguma sugestão? >Obrigado, e desculpem o e-mail longo. --------------------------------------------------------------------- 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