Debugando shell scripts

Um simples artigo que mostrará ao usuário iniciante em programação shell script algumas formas de se debugar scripts em busca daqueles erros, por vezes difíceis de serem detectados à primeira vista.

[ Hits: 29.086 ]

Por: Sandro Marcell em 29/05/2008 | Blog: http://sanmarcell.wordpress.com


Criando uma função debug



E se caso você deseje debugar seus scripts duma forma mais "esperta"!? Então como fazê-lo? A resposta é simples: Crie uma função.

Pegando o exemplo anterior, vamos construir nossa função debug.

#!/bin/sh
DEBUGAR=sim

function _Debug_() {
   if [ $DEBUGAR = sim ]
   then
         $*
   else
         :
   fi
}

date +%c
echo "Iniciando listagem:"

_Debug_ set -vx
for i in *
do
   file $i
done
_Debug_ set +vx

echo "Listagem concluída."
exit $?

Primeiro criamos a variável "DEBUGAR", que determinará se o modo debug será ou não ativado no script (no nosso caso o modo será ativado). Em seguida declaramos a função "_Debug_", cujo conteúdo é um teste condicional, que será o responsável por checar o valor da variável DEBUGAR e caso este valor seja "sim", o debug será ativado.

Então ao utilizarmos "_Debug_ set -vx", todo trecho subseqüente a ele será "debugado", até que o interpretador encontre a linha "_Debug_ set +vx", que indica que o modo debug deverá ser desativado.

Ao final, podemos concluir que ao criarmos nossa função debug, temos um controle ainda maior sobre o que será "debugado" em nossos scripts, bastando que para isso se altere o valor da variável "DEBUGAR".

Finalizando

Tudo que foi dito neste artigo pode ser utilizado sem problemas nos interpretadores: sh, bash, ksh, e zsh. A exceção se faz ao csh (tcsh) pelos seguintes fatos:
  • O built-in set no csh (tcsh) não funciona como "debugador", já que ele basicamente só pode ser utilizado para criar e atribuir valores à variáveis;
  • O csh (tcsh) não provê suporte a funções, logo não há como criar uma função debug para os scripts feitos neles.

Como disse lá no início, o principal objetivo deste é ajudar àqueles que estejam iniciando no mundo da programação em shell. Com isso acho que cumpri parcialmente esse objetivo e espero que você leitor, tenha tirado proveito deste simplório artigo.

Mais detalhes você encontra em:
  • man sh
  • man csh (ou tcsh)
  • man bash
  • man ksh
  • man zsh

Falou!!!

Página anterior    

Páginas do artigo
   1. Introdução
   2. Debugando com o built-in set
   3. Criando uma função debug
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Como matar um processo - kill, killall, pkill e xkill

Programação com Shell Script

Enviar e-mail pelo terminal com mutt

Cobrando com o SQUID

Discar BrasilTelecom com PPPOE no Ubuntu 6.10

  
Comentários
[1] Comentário enviado por dailson em 29/05/2008 - 12:06h

Excelente dica !!
Parabéns

[2] Comentário enviado por templuseletronic em 29/05/2008 - 15:10h

Muito boa dica,principalmente para iniciantes em script...

[3] Comentário enviado por Pianista em 29/05/2008 - 17:46h

muito bom pra iniciantes e até mesmo pra quem já tem esperiencia.

[4] Comentário enviado por fco em 29/05/2008 - 18:39h

O mestre do shell script, SMarcell!!!

Muito bom seu artigo. Simples e objetivo - direto ao ponto!

Parabéns!

Falou!!!

[5] Comentário enviado por gjr_rj em 29/05/2008 - 18:43h

Queria ter lido uma dica assim quando fiz o meu primeiro script.
Mesmo já tendo uma experiêcia, vai ajuda em muito.

Parabéns!

[6] Comentário enviado por teixeira em 30/05/2008 - 10:47h

Parabéns!

[7] Comentário enviado por f_Candido em 30/05/2008 - 12:29h

Muito Bom. Simples e Direto.

Abraços

[8] Comentário enviado por GilsonDeElt em 02/06/2008 - 14:38h

Valeu, cara!
Congratulations, SMarcell!

Os scripteiros de plantão que nem eu agradecem pela dica, simples, direta e produtiva.

Engraçado que quando meus scripts dão pau, eu fico meio sem saber onde, e começo aquela longa revisão manual...
Agora, vou poder "quebrar" essa revisão!

abraços, cara!
E que venha o próximo artigo!

[9] Comentário enviado por VonNaturAustreVe em 02/06/2008 - 19:59h

Hi

Perfeita á dica isso vai quebrar um galhão.

[]'s

[10] Comentário enviado por cesar em 03/06/2008 - 13:05h

Muito bom,

[]'s

[11] Comentário enviado por guino_luis em 07/04/2009 - 14:58h

Boa dica, vai ajudar muito na procura de erros!!
vlw

Guino

[12] Comentário enviado por fdmarp em 25/04/2009 - 12:28h

bacana


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts