У меня есть скрипт 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
. Это «запустит» скрипт/команды без фактического выполнения последнего шага запуска команды. Это часто позволяет вам выявлять сложные ошибки в расширениях оболочки и т. п., не вызывая нежелательного хаоса.