我的 makefile 有这样的东西:
build:
docker compose build && \
touch build || \
rm -f build
尽管在输出中看到构建错误,它似乎仍然在运行 touch 命令。知道为什么吗?
我有 docker 23.0.5。我试过 Make 4.3 和 4.4.1
这是一道shell编程题,不是makefile题。当你在 shell 中写这个时:
command1 && command2
然后
command2
只有在 command1
没有失败时才会被调用。那么,shell 如何知道 command1
是否失败?每个被调用的命令在停止时都会提供一个退出代码。如果退出代码为 0,则 shell 认为命令已成功(并将运行 command2
)。如果退出代码是 0 以外的任何其他值,则 shell 认为命令失败(并且不会运行command2
)。
如果命令
docker compose build && touch build
正在运行 touch
命令,则意味着 docker compose build
正在以成功 (0) 退出代码退出。如果您在 docker 中调用的命令失败,则失败的退出代码不会被传输为 docker compose
命令的退出代码。