Перенаправить вывод сценария оболочки в файл - PullRequest
0 голосов
/ 08 марта 2010

Я пытаюсь перенаправить вывод моего скрипта, и его нужно вызвать внутри скрипта.

filename=uname -a
filename="$filename" date

2>&1 | tee $filename".txt"

Это то, что я имею до сих пор, но это явно неправильно. Я не знаю слишком много сценариев SH, поэтому помощь приветствуется

для -Alex-

Ответы [ 3 ]

4 голосов
/ 09 марта 2010
filename=uname -a
filename="$filename" date

2>&1 | tee $filename".txt"

... Если вы посмотрите на код, который я разместил выше Я пытаюсь динамически назвать лог и использовать тройник для печати как консоль и командная строка.

Я думаю, вы ищете что-то вроде этого:

filename="$(uname -n)-$(date +%F).txt"
{
  dostuff
  domorestuff
} 2>&1 | tee "$filename"
1 голос
/ 09 марта 2010

это неправильно, потому что вы не назначаете свои переменные должным образом. Предполагая, что date - это дата GNU, а не какая-то созданная вами функция «дата». Вы можете искать. Используйте синтаксис $() для выполнения команд и перевода в переменную.

filename="$(uname -a)$(date)"

Кстати, вы уверены, что хотите использовать uname -a для имени файла? Вы также можете рассмотреть форматирование вашей даты, например date +%Y%m%d-%H%m%s.

0 голосов
/ 08 марта 2010

Вы должны просто напечатать все на консоль с эхо. Затем вы можете перенаправить это в журнал. Например:

# my_file.sh
echo "Doing stuff"
# Do stuff

# Invocation:
my_file.sh > my_log.log

Это дает вам наибольшую гибкость и элегантность.

Вы также можете писать в журнал напрямую из скрипта, например:

# my_file.sh
echo "Doing stuff" > my_log.log
# Do stuff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...