Регистрировать все действия bash с помощью нескольких скриптов

Используя приведенную ниже команду, я могу регистрировать все действия, произошедшие внутри этого сценария.

bash -x script.sh

К сожалению, этот сценарий вызывает другой сценарий, для которого не активен параметр -x , то есть этот параметр не наследуется дочерними сценариями.

Итак, есть ли способ активировать set -x для всех последующих скриптов?

0
задан 22 April 2016 в 02:54
1 ответ

Если вы не писали дочерние скрипты и не контролируете их содержимое, возможно, здесь нет способа сделать то, что вы хотите. Вы получаете представление о сценариях, которые вызываете напрямую, вызывая их с помощью bash -x вместо того, чтобы полагаться на их исполняемый бит.

Если у вас есть контроль над содержимым, рассмотрите возможность использования переменной среды чтобы указать, когда вам нужно дополнительное отслеживание, и сделайте что-то вроде этого:

В вашей среде или .bashrc

export MYAPP_LOGGING="on"

Затем в верхней части вашего скрипта добавьте что-то вроде:

test "$MYAPP_LOGGING" && set -x

Затем любое ненулевое значение для MYAPP_LOGGING включит отслеживание. unset MYAPP_LOGGING отключит его.

Также стоит отметить: вы можете отключить ведение журнала с помощью set + x , так что это даст вам возможность контролировать только части вашего скрипты.

1
ответ дан 4 December 2019 в 16:38

Теги

Похожие вопросы