Сломанная труба при выходе grepping, но только с флагом -i

Я пытаюсь проверить, установлена ​​ли определенная библиотека python, grepping вывод pip list . Если я попробую это

pip list | grep -q $package pip list | grep -q $package , он отлично работает. Если я попробую pip list | grep -qi $package pip list | grep -qi $package , я получаю следующий вывод ошибки

 pi@pibox:~ $ pip list | grep -i -q pyyaml Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> load_entry_point('pip==1.5.6', 'console_scripts', 'pip')() File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 248, in main return command.main(cmd_args) File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 156, in main logger.fatal('Exception:\n%s' % format_exc()) File "/usr/lib/python2.7/dist-packages/pip/log.py", line 111, in fatal self.log(self.FATAL, msg, *args, **kw) File "/usr/lib/python2.7/dist-packages/pip/log.py", line 164, in log consumer.flush() IOError: [Errno 32] Broken pipe 

это, по-видимому, является ошибкой на стороне python вещей, каков бы флаг grepm игнорировать случай, связанный с способностью посылать информацию по трубе?

Это на Raspberry Pi 3 running pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7) и grep (GNU grep) 2.20 .

  • Хвост журнальных файлов на двух разных хостах
  • Могу ли я подключать любые два процесса друг к другу?
  • Использовать функцию bash в конвейерной команде
  • Почему на выходе «echo 123> (cat)» есть «/ dev / fd / 63»?
  • Труба не поднимает stdout
  • Очень простой вопрос H / W с использованием трубы и grep
  • Прочитайте файлы из каталога и упорядочите их в соответствующих папках
  • неожиданный вывод с помощью grep
  • One Solution collect form web for “Сломанная труба при выходе grepping, но только с флагом -i”

    С флагом -q программа grep немедленно остановится, когда совпадёт первая строка данных.

    Однако pip все еще может пытаться отправить данные в трубу. Он получит SIGPIPE. И это вызывает отслеживание ошибок.

    С флагом -i возможно, что процесс grep прекратится раньше (раннее совпадение), прежде чем pip завершит запись результатов.

    Обычно вы не должны использовать -q в таком конвейере, если не уверены, что программа на другом конце может обрабатывать SIGPIPE.

    Итак, pip list | grep -i $packagename pip list | grep -i $packagename будет работать без ошибок.

    Linux и Unix - лучшая ОС в мире.