Parece-me (e corrija-me se estiver errado, por favor) que o bash é muito ruim em mensagens de erro que informam corretamente onde está o problema em seu script. Por exemplo, muitas vezes recebo "EOF ruim na linha 953". O que isso realmente significa é que está faltando fi
na linha 127. Ou, outro clássico é "-bash: linha 60: erro de sintaxe próximo ao token inesperado '('". O que isso realmente significa é que eu redeclarei minha função mything() {}
como um alias na linha 739 alias mything=
, exceto que, o erro do bash aponta para a linha 60 onde não há nenhum problema real (por isso demorei um pouco para encontrar o culpado na linha 739).
Tentei carregar a ferramenta 'bash debug' de maior sucesso no VS Code e não consegui fazer isso funcionar (pressiono F5 para executar, então aparece uma caixa dizendo "escolha um depurador", então seleciono bash debug e nada acontece) . Eu tentei uma ferramenta online que permite rodar código de forma interativa e diz que pode ajudar na depuração, mas isso também não ajudou. Eu faço um pouco de PowerShell e ele faz um trabalho um pouco melhor em relatar a origem de um problema. Existem maneiras (ferramentas ou ferramentas de análise de script no github ou online que podem verificar um script em busca de problemas como funções e aliases sendo redeclarados com o mesmo nome e outros testes como esse) que nos permitem depurar scripts bash um pouco melhor?
Encontrei este depurador de ponto de interrupção simples em um livro alemão de scripts de shell . Você adiciona as duas linhas a seguir sempre que quiser iniciar a depuração e percorra pressionando enter ou evaulate variáveis e funções em tempo de execução.
executar script
Alternativamente, usar
set -x
e modificar a variável promptPS4
me ajudou no passado.