Eu tenho um makefile em que paro um serviço antes de remover um arquivo. Quando não conseguia parar o serviço, o erro seria interrompido. Isso é claramente indesejado, então pensei em adicionar, || true
mas perdi a |
. Fazendo isto:
stop service foo | true
rm /etc/init/foo.conf
Estou confuso sobre por que isso está funcionando e o que está acontecendo. Isso significa que true
é um aplicativo e não apenas uma palavra-chave? Eles são os mesmos? Existe um bom motivo para usar | true
?
| true
é que, se o comando produzisse saída suficiente para preencher o buffer do pipe, ele bloqueava a espera detrue
lê-lo.foo || true
efoo | true
não fará a mesma coisa:foo || true
mostrará a saída defoo
, enquantofoo | true
descartará tudo que estiverfoo
gravado em sua saída padrão (efoo
provavelmente morrerá comSIGPIPE
ou bloqueará, como já indicado).