我有一个 makefile,在删除文件之前我会在其中停止服务。当它无法停止服务时,它会因错误而中断。这显然是不需要的,所以我想添加|| true
但错过了|
.进行中:
stop service foo | true
rm /etc/init/foo.conf
我很困惑为什么这会起作用以及发生了什么。这是否意味着它true
是一个应用程序而不仅仅是一个关键字?它们是一样的吗?有充分的理由使用吗| true
?
答案1
true
并且false
是核心工具(通常也是 shell 内置函数)只返回 0 和非 0,适用于您碰巧需要该行为的情况。从手册页:
true - 不执行任何操作,成功
false - 不执行任何操作,失败
因此,您将输出从管道传输stop service foo
到 into true
,它会忽略它并返回 0。从技术上讲,它是有效的,但您可能应该使用它,|| true
以便很明显您的意图是什么;确实没有理由将输出通过管道传输到不使用它的程序中