Я пытаюсь написать POSIX-совместимый код и хотел бы получить stdout
и stderr
в файл журнала, а также на экран, используя tee.Зачем мне возвращаться, чтобы вернуться в системное окно?
Программа работает нормально и делает то, что предполагается ... , но системное приглашение не появляется, пока я не вернусь к возврату каретки (снова). Я не уверен, почему это происходит. Кто-нибудь знает, как я могу избежать этого?
rm mylog.txt
exec > >(tee -a mylog.txt)
exec 2>&1
echo food
echo bar
exit
POSIX-код с заменой процесса? Когда они это добавили? –
Помимо того, что это не POSIX, замещение процесса, вероятно, является причиной вашей проблемы. Это немного шелушатся. Вероятно, он выходит из оболочки, не дожидаясь выхода из процесса 'tee' с первого раза, в результате чего запрос будет перезаписан последним битом вывода из tee –