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.