我在bash
中編寫了一個包裝器,它調用了其他shell腳本。但是,我只需要打印來自包裝器的輸出,避免了被調用腳本的輸出,我基本上都是登錄到日誌文件中。如何避免包裝器內被調用腳本的輸出
闡述... ..
基本上我使用功能
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時,基本上調用其他bash腳本的funtion2將其所有輸出記錄在文件.i.e中。 {TMPDIR}/$ {$}/$ {BASENAME%。*} .log}以及bash終端上。
我希望它只能迴應我在封裝器中寫入到bash終端的內容,其餘應記錄在日誌中。
PleaseNote: - 從包裝中稱爲腳本有回聲函數中,但我不希望有輸出應該在終端
顯示是否有可能實現....
您將得到與您的問題成正比的答案。如果你提供更多的細節,會得到更詳細的答案。例如,如果您已經記錄了後續的腳本輸出,它們如何進入stdout? – jm666
上面詳細說明了! –