Как отладить bash-завершения?


14

Я создал несколько функций завершения bash, которые кажутся работающими изолированно, но дают мне неожиданные результаты, когда я пытаюсь дополнить их табуляцией.

Можно ли подключить bashdb, затем попытаться завершить что-то с помощью табуляции и перейти к отладке и определить, что идет не так?


2
Просто чтобы добавить my к центам: вы должны использовать set -xin bash для отладки ваших скриптов. Используйте set +xдля отключения.

Ответы:


6

set -x

Если вы set -xлибо в интерактивном сеансе, либо в самом сценарии автозаполнения, (почти?) Каждая команда и ее результаты будут распечатаны. Это включает в себя работу, выполненную внутри сценария автозаполнения.

Это может быть затем снова успокоено с помощью set +x.

-Икс

После развертывания каждой простой команды для команды, команды case, команды select или арифметики для команды отобразите расширенное значение PS4, затем команду и ее расширенные аргументы или связанный список слов.

из руководства Bash # Set Builtin


2

Просто лог / выход из функций завершения bash; поскольку они, скорее всего, не являются ракетостроением, это должно быть довольно легко сделать. Может быть возможно подключить bashdb, но он чувствует себя ненужным ...


Подключение bashdb было бы намного проще и, как я ожидаю, быстрее, чем добавление лог-операторов в скрипты. Однако я не знаю, возможно ли это, и отсутствие ответов позволяет предположить, что это не так. Мне удалось решить мою проблему путем регистрации состояния в файл, как вы предлагаете, но вывод информации о регистрации в терминал не помогает при работе с дополнениями.
Дэн Мидвуд

3
@DanMidwood: используйте два терминала (например, screen + split). В одном запустите завершение, во втором tail -f- журнал.
Чороба

@choroba: Хороший. : D
Тамара Вийсман
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.