Java-подобный выход из функции bash при ее трассировке - PullRequest
0 голосов
/ 08 декабря 2018

При трассировке функции в bash я могу вернуть ненулевое значение (скажем, 1) из обработчика DEBUG trap, чтобы пропустить выполнение следующей строки.

Кроме того, я могу вернуть значение 2 для выполнения оператора return для возврата из функции без выполнения остальной части тела функции

Однако я хотел бы иметь возможность сделать шаг * текущей функции, не путем `возврата ', а путем выполнения оставшейся части тела функции всего за один кадр (вместо выполнения ее построчно до конца ее тела).

Возможно ли это?

1 Ответ

0 голосов
/ 09 декабря 2018

Конечно, утомительно, но, похоже, это можно сделать с помощью существующей информации о стеке вызовов, предоставленной Bash.

Вот как.

Продолжайте выполнять обработчик ловушек DEBUG, пока не достигнете следующегофрейм callstack, F2, расположенный прямо под текущим, F1, и остановка на номере строки, который больше или равен BASH_LINENO, сохраненному в F2.Проверка '... или равно' необходима для рекурсивных вызовов.

...