|
|
Guia: Programando em Shell ScriptCarlos E. Morimoto 22/03/2005 Corrigindo erros
Por exemplo, ao gravar o lilo com sucesso, ele exibirá uma mensagem como esta:
# lilo Caso exista algum erro no arquivo de configuração, ele avisa do problema e por segurança não salva as alterações:
# lilo Em alguns casos, um comando que não faz sua parte dentro do script pode causar uma pequena tragédia. Por exemplo, durante a instalação do Kurumin, é exibida a opção de revisar a configuração do arquivo, visualizando diretamente o arquivo de configuração. Caso alguma coisa dê errado, o lilo simplesmente não é gravado e o sistema não dá boot depois de instalado. Uma forma simples de monitorar a saída de erro é usar um "2>>" para direcioná-la para um arquivo de texto, que pode ser vasculhado pelo grep em busca de mensagens de erro. O programa de instalação do Kurumin usa a função abaixo para detectar erros de gravação do lilo. Toda função roda dentro de um while, de forma que é repetida até que o problema seja solucionado.
while
[ "$lilogravado" != "1" ]; do O script começa gravando o lilo, direcionando a saída de erros para um arquivo temporário. A variável "$TR" (usada dentro do script de instalação do Kurumin) contém o diretório de instalação do sistema, onde está montada a partição escolhida no início da instalação. Com a saída salva no arquivo, o grep é usado para verificar se o arquivo contém a palavra "Fatal", sintoma de que o lilo não foi gravado. Caso a palavra seja encontrada, é executado o restante do script, que exibe a mensagem de erro e pede que o usuário edite novamente o arquivo de configuração do lilo. Depois disso o script é executado novamente. Quando finalmente o lilo é gravado sem erros, a variável "lilogravado" assume o valor 1, encerrando o loop do while. Em alguns casos, você pode querer que o script salve a saída de texto de uma operação para verificar erros, mas ao mesmo tempo mostre a saída normalmente na tela. Você pode fazer isso usando o comando "tee". Por exemplo, um erro comum ao tentar instalar programas via apt-get a partir do testing ou unstable (onde os pacotes são atualizados com muita freqüência) é o apt tentar baixar versões antigas dos pacotes, que não estão mais disponíveis. Isso é corrigido facilmente rodando o "apt-get update" que baixa a lista com as versões atuais. Mas, nosso script pode detectar este erro e se oferecer para rodar o apt-get automaticamente quando necessário. Vamos chamar nosso script de "apt-get". Ele vai ser apenas um "wrapper", que vai repassar os comandos para o apt-get "real" que está na pasta "/usr/bin". Ou seja, quando você chamar o "./apt-get install abiword" vai estar usando nosso script, que vai direcionar os parâmetros para o apt-get e em seguida verificar se houve o erro: #!/bin/sh
rm
-f /tmp/apt
#
Verifica se algum pacote não pôde ser
baixado:
if
[ -n "$erro1" ]; then
resposta=$?
#
Verifica novamente, caso o erro persista exibe uma segunda mensagem: Ao executar um "./apt-get install abiword", usando nosso script num micro com a lista de pacotes desatualizada, você verá a mensagem:
A partir daí você poderia ir incluindo mais funções para corrigir outros problemas comuns. Este tipo de script pode ser muito útil em migrações, para aparar as arestas nos programas em que os usuários estejam tendo dificuldades, tornando o sistema mais inteligente. |