Могу ли я перехватывать сообщения ловушки вместе с $LINE_NO?

У меня есть код вида:

trap 'error ${LINENO} ${BASH_COMMAND}' ERR

Я хочу захватить сообщение об ошибке вместе с этим. Есть ли какая-нибудь встроенная переменная для печати сообщения об ошибке?

0
22.06.2017, 11:01
1 ответ

Обработка ошибок в сценариях оболочки довольно проста. Единственными стандартными способами обнаружения любого вида проблемы являются код возврата команды (не -ноль в случае ошибки )и вывод содержимого в стандартная ошибка (. дескриптор файла 2 ). Стандартная ошибка по умолчанию будет напечатана на вашем терминале. Если вам нужно передать его в error, например, потому что сообщения об ошибках тонут в другом выводе, вы можете, например, заменить текущую оболочку на ту, которая сохраняет стандартную ошибку во временный файл:

trap 'rm -f "${stderr_output_file}"' EXIT
stderr_output_file="$(mktemp)"
exec 2>"${stderr_output_file}"
[the rest of your program]
0
28.01.2020, 04:44

Теги

Похожие вопросы