Перенаправить вывод скрипта на несколько файлов журнала внутри скрипта - PullRequest
0 голосов
/ 12 февраля 2020

Итак, есть масса вопросов о перенаправлении вывода. Но я не смог найти ответ на этот сценарий.

Предположим, у меня есть скрипт вроде:

#!/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"

1 Ответ

0 голосов
/ 12 февраля 2020

Вы можете передать имя файла журнала каждой функции / методу. Затем используйте это имя файла для вывода журнала в этот файл, используя оператор «>>».

Будьте внимательны, используя оператор «>>» вместо «>». Как вы, возможно, знаете, «>>» добавляется в конец файла, а «>» перезаписывает файл.

...