У меня огромный сценарий bash, и я хочу записать определенные блоки кода в определенные & небольшие файлы журнала (вместо одного огромного файла журнала).
У меня есть два следующих метода:
# in this case, 'log' is a bash function
# Using code block & piping
{
# ... bash code ...
} | log "file name"
# Using Process Substitution
log "file name" < <(
# ... bash code ...
)
Оба метода могут помешать правильному выполнению сценария bash, например, при присвоении значений переменной (например, представленная проблема здесь ).
Как вы предлагаете вести журналвывод команд на лог файлы?
Редактировать: Это то, что я пытался сделать (помимо многих других вариантов), но не работает должным образом:
function log()
{
if [ -z "$counter" ]; then
counter=1
echo "" >> "./General_Log_File" # Create the summary log file
else
(( ++counter ))
fi
echo "" > "./${counter}_log_file" # Create specific log file
# Display text-to-be-logged on screen & add it to the summary log file
# & write text-to-be-logged to it's corresponding log file
exec 1> >(tee "./${counter}_log_file" | tee -a "./General_Log_File") 2>&1
}
log # Logs the following code block
{
# ... Many bash commands ...
}
log # Logs the following code block
{
# ... Many bash commands ...
}
Результатыисполнений может быть разным: иногда создаются файлы журнала, а иногда нет (что приводит к ошибке).