Как отладить/отследить функцию bash?

Как отладить/отследить функцию bash?

У меня есть скрипт bash myscript.sh, в котором есть куча функций внутри. Чтобы запустить одну функцию, я бы написал

source myscript.sh; myfunction

Как отладить такую ​​функцию?

решение1

Просто добавьте эти строки перед разделом, который вы хотите отладить.

set -v -x -e

и отключить его.

set +v +x +e

решение2

включите отладку в вашем скрипте и выведите отладку для функций с functrace.

set -x
set -o functrace

решение3

В Bash вы также должны уметь использовать:

$ set -xT

что позволяет отслеживать функции и

$ set +xT

отключить.

Также, ссылаясь на другой опубликованный ответ, я не рекомендую использовать -v для отладки (подробный режим), если только вы не проверяете скрипт/набор команд оболочки на синтаксис. Еще одно (общее) решение, которое иногда полезно, — это использование опции -nв сочетании с -x. Это «запустит» скрипт/команды без фактического выполнения последнего шага запуска команды. Это часто позволяет вам выявлять сложные ошибки в расширениях оболочки и т. п., не вызывая нежелательного хаоса.

Связанный контент