Мне нужно запросить версии пакета пакетов. Некоторые из пакетов не могут быть установлены на машину, в этом случае я хотел им быть проигнорирован.

К сожалению, rpm -q похоже, смешивает запрошенный вывод с диагностикой вместе на stdout вместо того, чтобы посылать последние в stderr как и следовало ожидать. Например:

% rpm -q bash notinstalled
bash-4.2.46-19.el7.x86_64
package notinstalled is not installed

Использование флага --quiet подавляет весь вывод, что совершенно бесполезно ...

Я знаю, я могу отфильтровать нежелательные строки с помощью grep , но я бы хотел, чтобы rpm не генерировал их в первую очередь. Или, если он должен сгенерировать их, отправьте их в stderr , который я затем могу игнорировать, или прямо в /dev/null .

Можно ли избежать пост-обработки с помощью grep или чего-то подобного?

1 ответ1

1

RPM (по истерическим причинам) возвращает некоторые статусы / ошибки внутриполосно (т.е. на stdin, а не на stderr). Поэтому рекомендуется использовать grep (или правильно сформированные команды).

Другой подход заключается в том, чтобы циклически проходить по аргументам CLI, вызывая один за другим проверку кода возврата (но это больше кодирование, чем grep, ymmv).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .