você está aqui: Home → Colunistas → Cantinho do Shell
Colaboração: Fernando M. Roxo da Motta
Data de Publicação: 11 de Setembro de 2009
Por vezes um script é muito grande e nos interessa fazer este "trace" apenas em um trecho do programa. Como fazê-lo? Coloque no início do trecho uma instrução:
set -x
Desta linha em diante o "trace" será ligado. Para desligar o "trace" mais adiante para evitar listar partes sem importância, use :
set +x
Veja que por vezes nós sabemos que o "problema" só ocorre quando alguma variável assume um determinado valor. Neste caso podemos ligar o "trace" condicionalmente :
if [ $VARIAVEL = valor ]; then set -x fi {trecho a debugar} set +x
Como se pode ver o "trace" pode ser desligado mesmo que ele não esteja ligado.
Esta forma de listar o script, durante a execução, vai listar o comando após a substituição das variáveis. Como identificar que variável tem que valor? Podemos usar a opção "-v" para listar as linhas duarnte a leitura. Na verdade eu prefiro usar uma combinação das duas opções:
set -xv {trecho a "debugar"} set +xv
Da mesma forma que antes o "+" desliga a opção.
Um último par de dicas. Se um script "liga" o "debug", apenas os "scripts" rodados com o comando "." terão o "debug" ligado. Para evitar que fique algum "debug" ligado quando se reutiliza o ambiente ( através do comando "." ) é interessante colocar no final do script um desligar geral de "debug", mesmo que o "debug" não tenha sido ligado :
# # Desliga "debug" se tiver sido ligado set +xv # Fim do script....
Publicado originalmente na Dicas-L em 19 de abril de 2004
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários