Использование тройника в скрипте bash (в Solaris) - PullRequest
2 голосов
/ 01 августа 2011

Я пытаюсь создать простой файл журнала вместе с запущенным скриптом, который я взломал вместе. Рассматриваемые строки выглядят следующим образом:

TEE="/usr/bin/tee"
TO_LOG="/usr/bin/tee >> $LOG_DIR/hosts.`date +%Y%m%d-%H%M%S`.log"

Тогда эти двое привыкнут вот так:

echo "something happened!" | $TO_LOG

К сожалению, единственное, что он делает, это создает пустое поле с буквальным названием >> в моем CWD. Запуск этого скрипта с bash -x показывает, что оператор перенаправления с оператором добавления получает одинарные кавычки - хотя я не уверен, что это происходит буквально или просто добавляется bash в интерактивном режиме отладки.

+ echo 'something happened!'
+ /usr/bin/tee '>>' /backups/logs/mylog.20110801-182337.log

Ответы [ 2 ]

5 голосов
/ 01 августа 2011

tee сам предназначен для записи в файл. Я думаю, что вы хотите:

/usr/bin/tee -a $LOG_DIR/hosts.`date +%Y%m%d-%H%M%S`.log

Опция -a заставляет tee добавлять, а не усекать файл (аналогично тому, как >> добавляет, тогда как > усекается в большинстве оболочек).

1 голос
/ 01 августа 2011

Это должно быть то, что вы хотите ...

TEE="/usr/bin/tee"
LOG="$LOG_DIR/hosts.$(date +'%Y%m%d-%H%M%S').log"
to_log() {
    $TEE -a $LOG
}

echo "test" | to_log
...