J'ai un makefile où j'arrête un service avant de supprimer un fichier. Quand il ne pouvait pas arrêter le service, il se cassait en cas d'erreur. C'est clairement indésirable, j'ai donc pensé ajouter || true
mais j'ai raté un |
. Faire:
stop service foo | true
rm /etc/init/foo.conf
Je ne sais pas pourquoi cela fonctionne et ce qui se passe. Est-ce à dire que true
c'est une application et pas seulement un mot-clé? Sont-ils les mêmes? Y a-t-il une bonne raison d'utiliser | true
?
| true
est que si la commande produisait suffisamment de sortie pour remplir le tampon de tuyau, elle bloquerait l'attente detrue
sa lecture.foo || true
etfoo | true
ne fera pas la même chose:foo || true
affichera la sortie defoo
, tandis quefoo | true
supprimera tout ce qui estfoo
écrit sur sa sortie standard (etfoo
risque de mourir avecSIGPIPE
ou de bloquer, comme déjà indiqué).