Я подготовил простой регистратор с функцией logMETHOD
:Bash - Передача значение как для консоли и переменной/файл
function logMETHOD {
exec 5>&1
local log
log="$("[email protected]" 2>&1 | tee /dev/fd/5; echo ${PIPESTATUS[0]}>/tmp/ssg_retval)"
local retVal=$(</tmp/ssg_retval)
rm -f /tmp/ssg_retval
_LOG_SSG+=$log$'\n'
return $retVal
}
Это здорово. Он помещает вывод переданного метода в консоль (через /dev/fd/5
) и переменную log
(через /dev/fd/1
) одновременно. Он также возвращает значение, возвращаемое переданным методом. Например.
logMETHOD scp test.txt [email protected]:/direcotry
Это работает, но, к сожалению, я не могу использовать его, потому что у меня нет доступа к /dev/fd/5
на сервере мне нужно использовать. "Доступ запрещен".
Я попытался использовать временный файл вместо файлового дескриптора, но он разбивает динамический вывод, например, scp
индикатор выполнения.
Есть ли способ реализовать эту функциональность без использования дескрипторов файлов?
Работает идеально. Спасибо! – aerion