Como depuro as conclusões do bash?

14

Eu criei algumas funções de conclusão do bash que parecem funcionar isoladamente, mas me dão resultados inesperados quando tento tabular com elas.

É possível conectar o bashdb e tentar tabular alguma coisa e avançar para depurar e determinar o que está errado?

Dan Midwood
fonte
2
Apenas para adicionar meus centavos: você deve usar o set -xin bash para depurar seus scripts. Use set +xpara desativar.

Respostas:

6

set -x

Se você estiver set -xna sessão interativa ou no próprio script de preenchimento automático, (quase?) Todos os comandos e seus resultados serão impressos. Isso inclui o trabalho realizado dentro do script de preenchimento automático.

Isso pode ser acalmado novamente com set +x.

-x

Depois de expandir cada comando simples, para comando, comando caso, selecione comando ou aritmética para comando, exiba o valor expandido do PS4, seguido pelo comando e seus argumentos expandidos ou lista de palavras associada.

-de Bash manual #The Set Builtin

Christopher Peterson
fonte
2

Apenas faça logon / saída das funções de conclusão do bash; como provavelmente não existem ciência de foguetes, isso deve ser bastante fácil de fazer. Pode ser possível conectar o bashdb, mas parece desnecessário ...

Tamara Wijsman
fonte
Conectar o bashdb teria sido muito mais simples e, espero, mais rápido do que adicionar instruções de log aos scripts. No entanto, não sei se é possível, e a falta de respostas sugere que não. Consegui resolver meu problema registrando o estado em um arquivo como você sugere, mas a saída de informações de log para o terminal não é útil ao trabalhar com conclusões.
precisa
3
@ DanMidwood: Use dois terminais (por exemplo, tela + divisão). Em um, execute a conclusão, no segundo, tail -fo log.
choroba
@choroba: Nice one. : D
Tamara Wijsman