Запустите скрипт bash с помощью bash -x ./script.sh
или добавьте его в свой скрипт, set -x
чтобы увидеть результаты отладки.
Дополнительно с bash
4.1 или позже:
Если вы хотите записать выходные данные отладки в отдельный файл, добавьте это в ваш скрипт:
exec 5> debug_output.txt
BASH_XTRACEFD="5"
Смотрите: https://stackoverflow.com/a/25593226/3776858
Если вы хотите увидеть номера строк, добавьте это:
PS4='$LINENO: '
Если у вас есть доступ к
logger
команде, вы можете использовать ее для записи отладочной информации через системный журнал с отметкой времени, именем скрипта и номером строки:
#!/bin/bash
exec 5> >(logger -t $0)
BASH_XTRACEFD="5"
PS4='$LINENO: '
set -x
# Place your code here
Вы можете использовать опцию -p
в logger
команде для установки индивидуального объекта и уровня , чтобы написать вывод через локальный системный журнал для своей собственной логфайл.
BASH_XTRACEFD="5"
bash, записывает вывод трассировки, сгенерированный, когдаset -x
он включен, в файловый дескриптор 5.exec 5> >(logger -t $0)
перенаправляет вывод из файлового дескриптора 5 вlogger
команду.С помощью
set -x
Я всегда использую
set -x
иset +x
. Вы можете обернуть области, которые вы хотите видеть, что происходит с ними, чтобы повернуть детализацию вверх / вниз.log4bash
Также, если вы выполнили работу по разработке и знакомы со стилем логгеров, которые называются log4j, log4perl и т. Д., Вы можете использовать log4bash .
выдержкаОттуда вы можете делать такие вещи в своих скриптах Bash:
В результате этого типа вывода:
log4sh
Если вам нужно что-то более портативное, есть и старшее
log4sh
. Работы аналогичныеlog4bash
, доступные здесь:источник
alias say="spd-say"
.bashrc, который имитируетsay
команду из других дистрибутивов или OS X.Есть отладчик bash, bashdb , который устанавливается во многих дистрибутивах. Он использует встроенный расширенный режим отладки bash (
shopt -s extdebug
). Это очень похоже на GDB; вот пример сеанса, чтобы придать некоторый вкус:Как и в GDB, оператор показывается непосредственно перед его выполнением. Таким образом, мы можем исследовать переменные, чтобы увидеть, что будет делать оператор, прежде чем он это сделает.
Это не то, что мы хотим! Давайте снова посмотрим на расширение параметров.
ОК, это работает. Давайте установим
newf
правильное значение.Выглядит неплохо. Продолжите сценарий.
источник
Стандартный метод отладки сценариев в большинстве оболочек на основе Bourne, таких как bash, - писать
set -x
в верхней части сценария. Это сделает bash более подробным о том, что делается / выполняется, и как оцениваются аргументы.это полезно как для интерпретатора, так и для скриптов. Например:
Выше мы видим, почему поиск не работает из-за некоторых одинарных кавычек.
Чтобы отключить функцию, просто введите
set +x
.источник
Использование Eclipse
Вы можете использовать комбинированную среду Eclipse и Shelled с помощью скрипта "_DEBUG.sh", приведенного ниже.
http://sourceforge.net/projects/shelled/files/shelled/update/
http://sourceforge.net/projects/basheclipse/
Переключение оболочек
По умолчанию инструмент разработки Shelled используется
/bin/dash
в качестве интерпретатора. Я изменил это, чтобы/bin/bash
иметь лучшую совместимость с большинством примеров оболочек в Интернете и моей средой.ПРИМЕЧАНИЕ. Вы можете изменить это, выбрав: Окно -> Параметры -> Сценарий оболочки -> Интерпретаторы.
Инструкция по настройке
В пакете Debugger есть шаги по использованию
_DEBUG.sh
сценария для отладки сценария, который в основном (readme.txt):Интерфейс отладки bash
Этот bash-отладчик обладает всеми функциями стандартных программных отладчиков, таких как:
Shelled (Shell редактор сценариев) IDE (Integrated Development Environment) имеет дополнительный бонус выполнения проверки контекста, выделяя и отступов при написании сценария. Если он не имеет правильного отступа, вы можете сразу же пометить / указать много ошибок там.
Тогда есть другие преимущества IDE, такие как:
источник
В последние годы появился замечательный ресурс: http://shellcheck.net
он показывает вам больше, чем обычный bash, позволяя легко находить эти противные незакрытые кавычки или фигурные скобки и т. д.
Просто убедитесь, что вы не вставляете конфиденциальную информацию (ips, пароли и т. Д.) Через сеть ... (особенно если это http, незашифрованный) (я считаю, что shellcheck также доступен для загрузки, но я не уверен)
источник
просто используйте:
то же самое для оболочки:
источник
В настоящее время есть VS Code Bash Debug.
https://marketplace.visualstudio.com/items?itemName=rogalmic.bash-debug
Он имеет «Step in / out / over», а также показывает значение каждой переменной.
источник