Основываясь на этом ответе ServerFault Отправьте вывод bash -x в файл журнала без прерывания стандартного вывода, современные версии bash включают в себя BASH_XTRACEFD специально для указания альтернативного файлового дескриптора для вывода set -x
Например, вы можете сделать
#!/bin/bash
exec 19>logfile
BASH_XTRACEFD=19
set -x
command1
command2
...
для отправки вывода set -x в файл logfile при сохранении стандартных стандартных выходов и стандартных потоков ошибок для следующих команд.
Обратите внимание, что использование fd 19 произвольно - это просто должен быть доступный дескриптор (т. Е. Не 0, 1, 2 или другой номер, который вы уже выделили).