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?


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


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.