回答:
true
そして、false
しているのcoreutilsは(また、一般的にビルトインをシェル)ちょうどあなたがその動作を必要とするために起こる状況では、0と非0を返すこと。マニュアルページから:
true-何もしない、成功する
false-何もしない、失敗する
したがって、出力をstop service foo
にパイピングしtrue
、無視して0を返します。技術的には動作しますが、おそらく使用する必要がある|| true
ので、意図が何であるかが明らかです。使用していないプログラムに出力をパイプする理由は本当にありません
| true
は、コマンドがパイプバッファをいっぱいにするのに十分な出力を生成した場合、そのtrue
読み取りを待機することをブロックすることです。
foo || true
とfoo | true
同じことをしないだろう。foo || true
からの出力を表示しますfoo
一方で、foo | true
すべて廃棄されますfoo
(とその標準出力に書き込みをfoo
して死ぬ可能性がありSIGPIPE
、既に示されているまたはブロック)。