将脚本的输出重定向到脚本中的多个日志文件

问题描述 投票:0回答:1

因此,存在大量有关重定向输出的问题。但是我无法找到这种情况的答案。

假设我有一个类似的脚本:

#!/usr/bin/env bash

_other_function1() {
  printf "THIS IS A FAKE FUNCTION"

}


_build_libMesh() {

  if eval "${__FULL_PATH}/moose/scripts/update_and_rebuild_libmesh.sh" | tee libmesh_build.log; then
    _debug printf ">> libMesh built successfully!\\n"
  else
    _die "libMesh build failed! Check 'libmesh_build.log'\\n"
  fi
}


_other_function2(){
  printf "THIS IS A FAKE FUNCTION TOO"
}


_build_app() {
  if eval "$(make -j "${_JOBS}")" | tee build_app.log; then
    _debug printf ">> ${_CODE_NAME} built successfully!\\n"
  else
    _die "${_CODE_NAME} build failed! Check 'build_app.log'.\\n"
  fi
}

_main() {
  _other_function1
  _build_libmesh
  _other_function2
  _build_app
}

if [[ "${BASH_SOURCE[0]}" = "${0}" ]]; then
  _parse_options "${@}"
  _main |& tee nicmma.log
fi

我本质上希望将整个脚本输出到日志文件,除了两个函数的输出外,我希望将这些输出输出到两个不同的日志文件。

所以nicmma.log看起来像:

THIS IS A FAKE FUNCTION
>> libMesh built successfully!
THIS IS A FAKE FUNCTION TOO
CODE_NAME build failed! check 'build_app'.log"
bash logging output io-redirection
1个回答
0
投票

您可以将日志文件的名称传递给每个功能/方法。然后,使用该文件名,通过“ >>”运算符将日志输出到该文件。

小心使用“ >>”运算符,而不要使用“>”。如您所知,“ >>”追加到文件的末尾,而“>”覆盖文件。

© www.soinside.com 2019 - 2024. All rights reserved.