Как перенаправить вывод обратно на дисплей для одной команды - PullRequest
2 голосов
/ 04 января 2012

В сценарии оболочки у меня есть

LOG=/my.log
exec 1>>$LOG
exec 2>&1

, который перенаправляет вывод в сценарий оболочки.Теперь проблема в следующем

LOG=/etc/security/aixpert/log/aixpert.log
exec 1>>$LOG
exec 2>&1

#some codes

print "I want this on cmd output not in log"

#I want rest of the output redirected to log as usual

Как я могу это сделать?

Ответы [ 2 ]

4 голосов
/ 04 января 2012

Ключ заключается в клонировании stdout перехода на консоль на произвольный fd (я выбрал 3) перед тем, как вы перенаправите его в свой журнал.Всякий раз, когда вы хотите отправить вывод на консоль, вы просто перенаправляете fd 1 обратно на fd 3 с помощью >&3 для этой одной команды

LOG=/etc/security/aixpert/log/aixpert.log

exec 3>&1 >>"$LOG" 2>&1

#some codes

echo "I want this on cmd output not in log" >&3

#I want rest of the output redirected to log as usual
2 голосов
/ 04 января 2012
# save stdout as fd 3
exec 3>&1
exec 1>>$LOG
exec 2>&1

echo foo >&3  # output to old stdout
echo bar      # output to logfile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...