我有一个生成文件,我在删除文件之前停止服务。当它无法停止服务时,它会因错误而中断。这显然是不需要的,所以我想我会添加|| true
但错过了|
. 进行中:
stop service foo | true
rm /etc/init/foo.conf
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么这会起作用以及正在发生什么。这是否意味着这true
是一个应用程序而不仅仅是一个关键字?他们是一样的吗?有充分的理由使用| true
吗?
Mic*_*zek 16
true
并且false
是仅返回 0 和非 0 的coreutils(通常也是 shell 内置程序),适用于您碰巧需要该行为的情况。从手册页:
true - 什么都不做,成功
false - 什么都不做,不成功
因此,您将输出从stop service foo
into管道传输true
,它会忽略它并返回 0。从技术上讲,它可以工作,但您可能应该使用|| true
它,因此很明显您的意图是什么;真的没有理由将输出通过管道传输到不使用它的程序中