Сломанная труба при выходе 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 .

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 будет работать без ошибок.

  • Почему здесь не работает grep с использованием трубы?
  • Хвост журнальных файлов на двух разных хостах
  • Поведение stdin / stdout в сочетании с подоболочками и командой cd
  • не может получить доступ к стандартным выводам из команды
  • Перенаправление stdin с stdout в файл
  • Вложенная строка grep выводит строку с надписью «(стандартный ввод)»
  • bash: перенаправить stderr в файл и stdout + stderr на экран
  • Как назначить переменную внутри трубы
  • Разноцветный Греп
  • Конкатенация содержимого файла И имен
  • Как запустить программу на экране, перенаправить весь вывод в файл и отсоединить
  • Как передать список файлов в grep
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.