【问题标题】:How to avoid output from called script within wrapper如何避免包装器中调用脚本的输出
【发布时间】:2013-06-19 15:10:58
【问题描述】:

我在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
}

现在,当它调用函数 1、函数 2 时,它基本上调用了其他 bash 脚本,它将所有输出记录在文件中。即{ TMPDIR}/${$}/${BASENAME%.*}.log } 以及 bash 终端上。

我希望它只将我在包装器中写入的内容回显到 bash 终端,其余内容应记录在日志中。

请注意:- wrapper 调用的脚本内部有 echo 功能,但我不希望终端上显示输出

有没有可能实现....

【问题讨论】:

  • 您将获得与您的问题成比例的答案。如果您提供更多详细信息,将得到更详细的答案。例如,如果您已经记录了后续脚本输出,它们如何进入标准输出?

标签: bash


【解决方案1】:

您需要将调用脚本的 stdout + stderr 都重定向到您的日志文件中。

./your_other_script.sh 2&>1 >> /var/log/mylogfile.txt

【讨论】:

    【解决方案2】:

    由于tee,您将输出到终端。所以你可以:

    start_logging ${LOGFILE}
    {
    Funtion1
    Funtion2
    } 2>&1 | tee -a ${LOGFILE} >/dev/null
                               ^^^^^^^^^^ - redirect the output from a tee to /dev/null
    

    或者干脆删除tee,所有日志只重定向到文件中

    start_logging ${LOGFILE}
    {
    Funtion1
    Funtion2
    } 2>&1 >${LOGFILE}
    

    或者对于较大的脚本部分,将部分包含在()对中,将在子shell中执行并将输出重定向到/dev/null,所以:

    (
    start_logging ${LOGFILE}
    {
    Funtion1
    Funtion2
    } 2>&1 | tee -a ${LOGFILE}
    ) >/dev/null
    

    【讨论】:

      猜你喜欢
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 2018-05-11
      • 2019-07-02
      • 2014-11-20
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      相关资源
      最近更新 更多