Saya punya makefile tempat saya menghentikan layanan sebelum menghapus file. Ketika tidak bisa menghentikan layanan, itu akan rusak karena kesalahan. Ini jelas tidak diinginkan jadi saya pikir saya akan menambahkan || true
tetapi melewatkan |
. Membuatnya:
stop service foo | true
rm /etc/init/foo.conf
Saya bingung mengapa ini bekerja dan apa yang terjadi. Apakah ini berarti true
aplikasi dan bukan hanya kata kunci? Apakah mereka sama? Apakah ada alasan bagus untuk menggunakannya | true
?
| true
adalah bahwa jika perintah menghasilkan output yang cukup untuk mengisi penyangga pipa, itu akan memblokir menunggu untuktrue
membacanya.foo || true
danfoo | true
tidak akan melakukan hal yang sama:foo || true
akan menampilkan output darifoo
, sedangkanfoo | true
akan membuang semuanyafoo
menulis ke output standarnya (danfoo
kemungkinan akan mati denganSIGPIPE
atau memblokir, seperti yang sudah ditunjukkan).