У меня есть make-файл, где я останавливаю службу перед удалением файла. Когда это не могло остановить обслуживание, это сломалось бы по ошибке. Это явно нежелательно, поэтому я решил добавить, || true
но пропустил |
. Делая это:
stop service foo | true
rm /etc/init/foo.conf
Я не понимаю, почему это работает и что происходит. Означает ли это, что true
это приложение, а не просто ключевое слово? Они одинаковы? Есть ли хорошая причина для использования | true
?
| true
заключается в том, что если команда выдаст достаточно выходных данных для заполнения буфера канала, она заблокирует ожиданиеtrue
ее чтения.foo || true
иfoo | true
не будет делать то же самое:foo || true
покажет вывод изfoo
, в то время какfoo | true
будет отбрасывать всеfoo
записи в свой стандартный вывод (иfoo
, скорее всего, умретSIGPIPE
или заблокировать, как уже указано).