Imprimir todos os comandos em uma função bash


0

Estou tentando depurar uma função bash.

É possível imprimir todos os comandos executados por uma função bash? Eu sei que é possível imprimir todos os comandos por um script bash alterando

#!/bin/bash

para

#!/bin/bash -x

Como obtenho o mesmo efeito para uma função bash?

Obrigado.

Respostas:


2

Você precisa editar a função para adicionar e remover rastreios, por exemplo: -

FuncName()
{
    set -x ;# Enable tracing on entry

    ... (function code) ...

    set +x ;# Disable tracing on exit
}

Obrigado. Descobri que set + x não é necessário no final se houver apenas 1 função sendo executada. O conjunto -x na função não afeta o shell.
user674669

11
Minhas descobertas são diferentes, mas não conheço o ambiente no qual você está chamando a função. As funções são executadas no shell atual e quaisquer alterações nas variáveis ​​de ambiente, nas opções e no diretório atual são mantidas quando a função retorna. Se você estiver chamando uma função em um script, essas alterações serão mantidas no script de chamada, mas perdidas quando o script retornar. Se você definir uma função no shell atual e chamá-la a partir daí, suas alterações no ambiente serão mantidas na saída set +x.
AFH
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.