Перенаправить вывод эха в оболочке script в файл журнала

У меня есть оболочка script с большим количеством echo. Я хотел бы перенаправить вывод в файл журнала. Я знаю, что есть командный вызов cmd > logfile.txt или сделать это в файле echo 'xy' > logfile.txt, но можно ли просто установить имя файла в script, который затем автоматически записывает все эхо в этот файл?

Ответ 1

Вы можете добавить эту строку поверх своего script:

#!/bin/bash
# redirect stdout/stderr to a file
exec &> logfile.txt

ИЛИ иначе перенаправить только использование stdout:

exec > logfile.txt

Ответ 2

Я попытался управлять командой ниже. Это будет записывать вывод в файл журнала, а также печатать на консоли.

#!/bin/bash

# Log Location on Server.
LOG_LOCATION=/home/user/scripts/logs
exec > >(tee -i $LOG_LOCATION/MylogFile.log)
exec 2>&1

echo "Log Location should be: [ $LOG_LOCATION ]"

Ответ 3

Вы можете легко перенаправить различные части вашей оболочки script в файл (или несколько файлов) с помощью под-оболочек:

{
  command1
  command2
  command3
  command4
} > file1
{
  command5
  command6
  command7
  command8
} > file2

Ответ 4

LOG_LOCATION="/path/to/logs"    
exec >> $LOG_LOCATION/mylogfile.log 2>&1