bash debugging отладка скриптов (ликбез)
Здравствуйте.
Подошел в работе плотно к вопросам автоматизированной сборки приложений. Пока не то, чтобы у нас был красивый CI/CD с кучей плюшек - пока bash наследие которое при правильном сложении звезд, дает приемлемый результат. Но это лирика. Вопрос в другом. В bash скрипте (Jenkins) есть строка set +x Документация говорит, что корректнее писать set -x Далее открывается новое для меня понятие PS4, которых оказывается 5(!) PS1, PS2, PS3, PS4 and PROMPT_COMMAND + set -o xtrace Вопрос больше ликбез - о том, как использовать bash и его "мощь" правильно, чтобы красиво и удобно. Т.к. сейчас это дебаг - принтами и довольно примитивная культура множественного перезапуска с исправлением одной, двух строк. Должны же люди были придумать что удобное. Какой бы вы документ предложили с внятным изложением этих процессов? Где научиться правильно использовать PS1 - PS4 уровни ? Как "правильно" вести отладку, и какие есть инструменты помощи программисту? |
Не следует путать "уровень" и "переменную окружения". PROMPT_COMMAND, ровно как и PS0-PS4 - переменные окружения оболочки bash, хотя они и не устанавливаются автоматически все же во многом влияют на ход работы последней. Если объяснять на пальцах, то по принципу "переменная=<принимаемое_значение>".
PROMPT_COMMAND=команда Если эта переменная установлена, bash выполняет указанную команду всякий раз, прежде чем выводить основное приглашение. PS0=строка Символьная строка, выводимая интерактивными оболочками после чтения команды (но перед ее выполнением). PS1=строка Основная строка приглашения (по умолчанию '\s-\v\$ '). PS2=строка Вспомогательное приглашение, применяемое в многострочных командах (по умолчанию '>'). PS3=строка Строка приглашения в select (по умолчанию '#?'). PS4=строка Строка приглашения к трассировке выполняемых команд (при bash -x или set -x). Следует иметь в виду, что оболочки запущенные с правами root, не наследуют эту переменную из рабочей среды. (Значение по умолчанию '+'). Теперь о set -x. Во-первых, set -o xtrace и set -x - равнозначны и активируют режим отображения команды вместе с ее аргументами во время ее выполнения, предваряя ее значением переменной PS4. Этим, собственно, обеспечивается пошаговая трассировка сценариев в bash. Во-вторых, отладка командных сценариев - понятие абстрактное, ровно настолько, что у каждого найдутся свои контраргументы что есть "тру", а что "бэд". Словом, здесь кроме чтения встроенных манов и холостыми экспериментами сути в полной мере не передать. |
Время: 09:48. |
Время: 09:48.
© OSzone.net 2001-