você está aqui: Home  → Arquivo de Mensagens

Shell scripting - debug de código

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 04 de junho de 2013

Para resolver problemas de lógica ou outros problemas em scripts shell, podemos invocar o script com a diretiva "-x" ou "-v":

  #!/bin/bash -x

ou

  #!/bin/bash -v

ou ainda

  #!/bin/bash -xv

Em todos os exemplos acima, o debug irá se dar no código de todo o script, o que muitas vezes, dependendo da complexidade e tamanho do script, pode ser um pouco confuso para interpretar.

Com o comando "set -x" podemos ativar o debugging em seções específicas de nosso código, as partes em que suspeitamos que o erro possa estar alojado.

  #!/bin/bash
  
  for z in AA BB CC
  do
   echo $z
  done
  
  for n in 01 02 03
  do
   set -x
   touch 201306$n.ad
   echo "-> Arquivo 201306$n.ad criado com sucesso"
   set +x
  done

Durante a execução vemos que o primeiro laço é executado sem alterações, mas a partir do segundo laço, os comandos que são interpretados são precedidos do sinal "+", seguidos do resultado final da execução.

  AA
  BB
  CC
  + touch 20130601.ad
  + echo -> Arquivo 20130601.ad criado com sucesso
  -> Arquivo 20130601.ad criado com sucesso
  + set +x
  + touch 20130602.ad
  + echo -> Arquivo 20130602.ad criado com sucesso
  -> Arquivo 20130602.ad criado com sucesso
  + set +x
  + touch 20130603.ad
  + echo -> Arquivo 20130603.ad criado com sucesso
  -> Arquivo 20130603.ad criado com sucesso
  + set +x

O trecho que será debugado é delimitado pelos comandos "set -x" e "set +x".

A diretiva "-x" é uma abreviação para xtrace. Os comandos "set -x" e "set -xtrace" são equivalentes.

Tudo que é efetivamente executado é impresso, após terem sido realizadas todas as substituições e expansões.

Referências



Veja a relação completa dos artigos de Rubens Queiroz de Almeida