Я написал обертку в bash
, которая вызывает другие сценарии оболочки. Тем не менее, мне нужно распечатать только выходные данные из оболочки, избегая вывода из вызываемых скриптов, которые я в основном регистрирую в файле журнала.Как избежать вывода вызванного сценария в оболочке
Разрабатывая ... ..
В основном я использую функцию
start_logging ${LOGFILE}
{
Funtion1
Funtion2
} 2>&1 | tee -a ${LOGFILE}
Где начать регистрацию, это определить, как: - (я только мог понять эту функцию частично)
start_logging()
{
## usage: start_logging
## start a new log or append to existing log file
declare -i rc=0
if [ ! "${LOGFILE}" ];then
## display error and bail
fi
local TIME_STAMP=$(date +%Y%m%d:%H:%M:%S)
## open ${LOGFILE} or append to existing ${LOGFILE} with timestamp and actual command line
if [ ${DRY_RUN} ]; then
echo "DRY_RUN set..."
echo "${TIME_STAMP} Starting $(basename ${0}) run: '${0} ${ORIG_ARGS}'" { I}
echo "DRY_RUN set..."
echo "Please ignore \"No such file or directory\" from tee..."
else
echo "${TIME_STAMP} Starting $(basename ${0}) run: '${0} ${ORIG_ARGS}'"
echo "${TIME_STAMP} Starting $(basename ${0}) run: '${0} ${ORIG_ARGS}'"
fi
return ${rc}
}
LOGFILE определяется в обертке как
{
TMPDIR ="$/tmp"
LOGFILE="${TMPDIR}/${$}/${BASENAME%.*}.log
}
Теперь, когда его вызывающий funtion1, funtion2, который в основном вызывает другие скрипты bash, регистрирует весь вывод в файле .i.e. {TMPDIR}/$ {$}/$ {BASENAME%. *}. Log}, а также на терминале bash.
Я хотел, чтобы он должен был только отгонять то, что я написал в обертке, к терминалу bash, и отдых должен записываться в журнал.
PleaseNote: - вызываемая скрипты из обертки имеют эхо-функции внутри, но я не хотел, что вывод должен быть отображен на терминале
Можно ли достигнуть ....
Вы получите ответы пропорционально вашему вопросу. Если вы предоставите более подробную информацию, получите более подробный ответ. Например, если вы уже регистрируете последующие сценарии вывода, как они входят в стандартный вывод? – jm666
Разработано выше !!! –