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!!!