Intereting Posts
Установка PCLinuxOS без клавиатуры usb в загрузчике Скрипт, пропускающий столбец Не удалось установить erlang Языки управляемого языков программирования в Linux Почему mutt зависает при запуске gpg в tmux? Как перенаправить электронные письма из учетной записи POP3 в другую учетную запись SMTP или IMAP? ^ P не работает в zsh, где я должен смотреть? debian asus g551jm gnome 3 с использованием интегрированного gpu вместо nvidia Как запустить прямой эфир в качестве локального радио Использование бриз-темных приложений, отличных от KDE? vsftpd не разрешает пользователям chrooted записывать в каталог Различное смещение функции для той же версии libc Linux Mint 17.3 не подключается к Интернету, когда находится в терминале, но может подключиться с помощью firefox, и я использую прокси-сервер Почему может произойти сбой вызова getaddrinfo () с EAI_SYSTEM и ошибочным значением EBUSY («Устройство или ресурс занят»)? Как получить общее количество байтов / секторов / блоков, записанных на диск с момента загрузки?

Печать stderr только в том случае, если в stdout ничего не записано, иначе распечатайте только stdout, отбрасывая stderr

Есть команда, которая всегда печатает материал для stderr. Такая информация никогда не бывает полезной, кроме случаев, когда она ничего не пишет для stdout.

Итак, есть ли простой способ оболочки, инструмент или команда, чтобы помочь фильтровать stdout и stderr, исходящие из команды, и транслировать их так, чтобы предыдущий вывод stderr печатался в stderr только в том случае, если прежний вывод stdout пуст, иначе (когда stdout не пуст) он просто печатает stdout?

Вы можете перенаправить их как во временные файлы, так и (в скрипте), проверить, было ли что-либо записано на стандартный вывод.

Что-то вроде

#!/bin/sh mytemp=$(mktemp -d) trap "rm -rf $mytemp" EXIT INT QUIT HUP "$@" 2>$mytemp/error | tee $mytemp/output [ -s $mytemp/output ] || cat $mytemp/error