Eu tenho um script bash myscript.sh
, que contém várias funções. Para executar uma função, eu escreveria
source myscript.sh; myfunction
Como depurar tal função?
Responder1
Basta adicionar estas linhas antes da seção que deseja depurar.
set -v -x -e
e para desativá-lo.
set +v +x +e
Responder2
habilite a depuração em seu script e a depuração de saída para funções com functrace
.
set -x
set -o functrace
Responder3
Você também deve poder usar no Bash:
$ set -xT
que permite rastreamento de função e
$ set +xT
desabilitar.
Além disso, com referência a outra resposta postada, não recomendo usar -v para depuração (modo detalhado), a menos que você esteja verificando a sintaxe de um script/conjunto de comandos shell. Uma outra solução (geral) que às vezes é útil é usar a -n
opção em conjunto com -x
. Isso "executará" um script/comandos sem realmente executar a última etapa da execução de um comando. Muitas vezes, isso pode permitir que você detecte erros difíceis em expansões de shell e similares, sem causar danos indesejados.