Com o sinal -q
, o programa grep
parará imediatamente quando a primeira linha de dados corresponder.
No entanto, pip
ainda pode estar tentando enviar dados para o pipe. Ele receberá um SIGPIPE. E isso faz com que o erro seja traceback.
Com o sinal -i
, é possível que o processo grep
seja interrompido mais cedo (correspondência anterior), antes que pip
tenha terminado de escrever os resultados.
Normalmente, você não deve usar -q
em um pipeline como este, a menos que tenha certeza de que o programa na outra ponta possa manipular o SIGPIPE.
Portanto, pip list | grep -i $packagename
funcionará sem erros.