![我很困惑为什么 makefile 中的“| true”与“|| true”具有相同的效果](https://linux22.com/image/1535/%E6%88%91%E5%BE%88%E5%9B%B0%E6%83%91%E4%B8%BA%E4%BB%80%E4%B9%88%20makefile%20%E4%B8%AD%E7%9A%84%E2%80%9C%7C%20true%E2%80%9D%E4%B8%8E%E2%80%9C%7C%7C%20true%E2%80%9D%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%E7%9A%84%E6%95%88%E6%9E%9C.png)
我有一个 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
以便很明显您的意图是什么;确实没有理由将输出通过管道传输到不使用它的程序中